ApplicationSettings через библиотеку

голоса
0

Я пытаюсь абстрагироваться из всего кода базы данных в отдельную библиотеку, а затем использовать эту библиотеку во всем моем коде. Все соединения с базой данных выполняются с помощью типизированных адаптеров таблиц, которые я создаю с помощью перетаскивания в наборах данных в VS2005, используя строку подключения из AppSettings.

Проблема, что я не в состоянии решить, что .Net не распространяется на библиотеки AppSettings на другой проект, который его использует.

Короче говоря, у меня есть библиотека слой базы данных, MyProgram.DbLayer, который используется в других проектах, таких как MyProgram.Client и т.д. Когда у меня были все наборы данных в .Client ConnectionString был в MyProgram.Client.exe.config так, что Я мог бы изменить его после сборки. Когда я переехал его в MyProgram.DbLayer, что установка не поступила ко мне после того, как я строя двоичных файлов.

EDIT: Это, как представляется, более общая проблема с ApplicationSettings.

То, что я заметил, что если я вручную добавить параметр используется только в библиотеке будет правильно читать. Единственное, что мне сейчас нужно для настройки будут автоматически включены в файл .config, а также.

Задан 09/12/2008 в 15:59
источник пользователем
На других языках...                            


2 ответов

голоса
1

Если я правильно понимаю вашу проблему правильно, это звучит, как вам нужно

1.) Общий контекст приложения для всех вызовов доступа к данным

или

2.) Другой способ доступа настройки конфигурации

1: Оберните слой данных в рамках службы, которая работает в рамках одного контекста (IIS, Windows Service, и т.д.)

2: Не использовать механизм управления конфигурацией, что вы в комплект поставки. Вместо того, чтобы использовать файлы свойств в определенном месте.

Не забывайте, однако, что параметры конфигурации каскада из разных уровней. Например ... если добавить параметр в machine.config, то каждое приложение работает на этой машине будет использовать этот параметр, если он не будет заменен на более низком уровне ... Это может быть хорошим способом для установки стандартизированной установки в вашей конфигурационные файлы.

Ответил 09/12/2008 в 16:22
источник пользователем

голоса
1

AppSettings / ConnectionStrings всегда будет читаться из запущенного пула приложений.

Под этим я имею в виду:

Если у меня есть , A.exeкоторый имеет класс DAL.cs. DAL.cs считывает строку подключения из конфига, и он возвращается , "abc"как и ожидалось.

Я затем перейти DAL.cs к своему собственному проекту, и , таким образом, свою собственную сборку. Я все еще могу иметь его вызвать строку соединения с app.config, однако, мне нужен будет на «хозяин» сборка в запущенном приложении и добавить строку подключения к этому приложению приложение конфигурации . Итак, я создаю новый app.config и указать строку соединения "xyz"в нем, когда он работает, он работает , как ожидалось.

Теперь, если изменить ссылку на A.exeпроект , чтобы использовать новый DAL.dll, строку , что соединение вы думаете , это будет иметь? "xyz"? Неа! Он будет использовать , "abc"как это было раньше , потому что все еще настроен в файле конфигурации приложения для A.exe.

Я знаю , что это работает , потому что я использовал общий код DAL во многих ОС Windows и веб - приложений.

Если какая-либо из этого неясно, или не поможет вашей проблемы, пожалуйста, дайте мне знать, комментируя этот ответ.

Обновление следующий комментарий от OP

Под «хозяином» я имею в виду приложение, которое звонит на общий код. Это может быть Windows, или веб-приложение, в основном это контекст приложения.

Вам нужно будет создавать записи в файлах конфигурации для каждого приложения, использующего общий код. Если я неправильно понял ваш первоначальный вопрос (вполне возможно, что это был длинный день!), И вы хотите, чтобы централизовать настройку, а также, то вам нужно будет:

  • Создайте некоторую форму централизованного хранения (будь это XML, DB, что угодно).
  • Повысьте общий код, чтобы иметь значения по умолчанию, чтобы дать ему возможность подключиться к централизованному хранению.
  • Оттуда код может настроить себя, основываясь на информации в хранилище конфигурации.

Надеюсь это поможет :)

Ответил 09/12/2008 в 16:14
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more