Каков предпочтительный метод изменения настроек строки подключения в библиотеке классов DAL при развертывании веб-приложения asp.net? - PullRequest
3 голосов
/ 19 июля 2009

Я развернул свой проект веб-приложения asp.net, в котором есть ссылка на мою библиотеку классов DAL. Как я могу изменить строку подключения в моей библиотеке DAL после развертывания? Код DAL игнорировал мою строку подключения web.config и пытался использовать значение app.config.

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

Существует ли опция или способ настройки файлов проекта, в которых он изменяет значения строки подключения, основываясь на том, что компилируется в режиме отладки по сравнению с компиляцией релиза. Каков рекомендуемый способ работы со строками подключения в веб-приложениях, которые ссылаются на библиотеки классов?

Пояснение: строки подключения библиотеки DAL также используются некоторыми наборами данных и классами L2S (.dbml), и я не уверен, как изменить их для ссылки на файл web.config, который находится вне библиотеки в проекте веб-приложения.

В настоящее время используя этот код, чтобы обойти мою проблему класса L2S:

public partial class MyDataContext 
{
    partial void OnCreated()
    {

        ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];

        if (cs != null)
        {
            this.Connection.ConnectionString = cs.ConnectionString;
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 19 июля 2009

Обычно я помещаю строку в файл web.config и позволяю классу (возможно, глобальному классу, который используется для ссылки на настройки в web.config) ссылаться на нее со следующей строкой:

class Globals
{
    static string ConnectionString =
        ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
}

и используйте его в другом месте, например:

IApartmentRepository apartmentRepository = new
    ApartmentRepository(Globals.ConnectionString);

Это было также предложение Саифа Кхана в его ответе.

Что касается изменения строк подключения в зависимости от режима компиляции, Visual Studio 2010 поддерживает это, см. Web Deployment: Web.Config Transformation из блога команды разработчиков Visual Web. Я не думаю, что Visual Studio 2008 может сделать это из коробки, однако, возможно, это можно сделать с помощью какого-то сценария сборки.

2 голосов
/ 19 июля 2009

Обычно я позволяю проекту верхнего уровня определить это через web.config или app.config; либо указав, что приложение должно включать строку подключения с именем «FOO», либо (что намного лучше), позволяя вызывающему приложению передать (один из) ключ подключения, строку подключения или подключение к dll.

Тогда вы в основном просто редактируете web.config как обычно ...

0 голосов
/ 19 июля 2009

Я не верю, что есть рекомендуемый, но предпочтительный способ. Некоторые хранят строки подключения в файле web.config, в то время как другие хранят в реестре или machine.config, а некоторые доходят до крайности и сохраняют его удаленно ... да, я видел это.

Самым распространенным хранилищем, которое я вижу и использую сам, является хранилище в файле web.config. В моих объектах DAL я вызываю файл web.config для строки подключения

string connStr = ConfigurationManager.ConnectionStrings ["myString"]. ConnectionString

Что касается автоматического изменения строки подключения в зависимости от режима компиляции приложения, я никогда не видел этого. Возможно, вам придется поставить эту проверку в самом DAL, чтобы проверить, включен ли режим отладки «включен» или «выключен». Для этого потребуется 2 записи строки подключения в файле web.config.

...