Как получить доступ к строке подключения из библиотеки - PullRequest
5 голосов
/ 07 марта 2011

У меня есть веб-проект (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>

Ответы [ 4 ]

7 голосов
/ 07 марта 2011

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

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

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

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

5 голосов
/ 07 марта 2011

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

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

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

0 голосов
/ 07 марта 2011

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

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

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

0 голосов
/ 07 марта 2011

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

...