Как получить доступ к строке подключения из библиотеки

У меня есть веб-проект (mvc) и уровень доступа к данным в отдельном проекте библиотеки классов. Мне нужен доступ к строке подключения в app.config, которая находится в этом библиотечном проекте.

ConfigurationManager.ConnectionStrings [0] .ConnectionString тянет что-то странное. У меня нет таких настроек ни в конфигурации библиотеки, ни в файлах конфигурации веб-проекта.

App.config выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
  <connectionStrings>
   <add name="DALConnectionString" connectionString="User ID=sa;Password=pass;Initial     Catalog=db;Data Source=srv\SQL2005;" />
 </connectionStrings>
</configuration>

person iLemming    schedule 07.03.2011    source источник


Ответы (4)


По умолчанию библиотека классов не может получить доступ к файлу конфигурации.

Клиент библиотеки классов, в данном случае ваш веб-проект, может предоставлять настройки конфигурации.

Поэтому поместите все соответствующие настройки, строки подключения в файл конфигурации сети. Код ConfigurationManager в библиотеке классов будет использовать настройки конфигурации веб-проектов.

person Joe Ratzer    schedule 07.03.2011

В этом случае ваша библиотека должна использовать внедрение зависимостей для инверсия управления.

Ваш класс в библиотеке уровня доступа к данным (DAL) должен принимать строку подключения как constructor argument или property value.

Это гарантирует, что ваш DAL может использоваться и в других проектах и ​​не привязан к вашему веб-приложению mvc.

Пусть код, который будет использовать DAL, прочитает строку подключения из файла конфигурации и вставит ее в конструктор вашего класса.

person Unmesh Kondolikar    schedule 07.03.2011

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

person Davide Piras    schedule 07.03.2011

Вы не можете получить доступ к app.config для библиотеки DLL.

app.config работает только для сборки точки входа или web.config для веб-проекта.

Попробуйте скопировать соединение в конфигурацию точки входа или загрузить конфигурацию, проанализировав XML конфигурации - не рекомендуется.

person Aliostad    schedule 07.03.2011