2009-03-23 3 views
1

В нашем веб-проекте у нас есть собственный класс подключения к базе данных, который создает объект SqlConnection и получает строку подключения DB для нас из web.config.Задача класса пользовательской базы данных

Хотя это хорошо, есть одна проблема. Все проекты внутри нашего веб-проекта зависят от того, что web.config существует, чтобы этот класс мог работать.

Необходимо использовать это соединение db от нашего DL в других решениях или проектах, для которых не требуется использовать web.config, например, проект консоли, который пытается использовать. Скажем, некоторые из методов DL из нашего веб-проекта выполните некоторые манипуляции с данными.

Следовательно, когда я добавляю некоторые из наших методов проекта BL к моему консольному решению, он хочет создать соединение с БД, но у меня нет приложения web.config в моем приложении консоли, поэтому он взрывается.

Есть ли лучший способ управлять создание SqlConnection чем: а) положить, что класс в веб-проекте б) делает эту связь зависит от ключей web.config

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

+0

никогда не было, оно было абстрагировано в другой проект. Моя вина. разрешено – user72603

+0

ОК, это все еще проблема. Несмотря на то, что этот класс соединения абстрагирован, в конечном итоге он все еще получает значения строки соединения из ключей в web.config. Поэтому, если я не использую web.config, это делает меня абсолютно бесполезным в моем не-веб-решении. – user72603

ответ

1

В вашем консольном приложении эти параметры подключения к DB должны войти в App.Config, однако вы явно не хотите, чтобы они хранились в приложениях App.Config и Web.Config, поэтому вы можете использовать следующую технику.

1) Перемещение параметров конфигурации DN для одного файла DBSettings.config

2) Reference, что конфигурация из Web.Config и App.Config в соответствии с требованиями

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings file="DBSettings.config"> 
    ... 
</configuration> 

Эта методика является detailed here.

+0

Да, я вижу, что DBSettings.config будет хорошим в долгосрочной перспективе. Но пока, в моем консольном приложении ... которое не имеет ничего общего с сетью, я могу просто создать App.Config, и существующий код будет знать, чтобы забрать его там вместо web.config автоматически? – user72603

+0

Мое консольное приложение находится в совершенно новом решении (называемом Data Loads) и использует около 3 классов, которые использует наш веб-проект (BL и т. Д.) Для получения наших данных, но не использует какой-либо веб-проект в Data Загрузите решение, так как оно не имеет ничего общего с веб-сайтом и является просто служебным решением. – user72603

+0

Итак, если я добавлю файл App.config в решение для загрузки данных или в консольное приложение, тогда он будет работать так же, как если бы у меня был другой xml файл конфигурации? Другими словами, вызов System.Configuration.ConfigurationManager.AppSettings должен работать, если я добавлю App.config в консольное приложение? – user72603

Смежные вопросы