Требуется руководство Строка подключения приложения ASP.Net - PullRequest
3 голосов
/ 22 мая 2009

Net 2.0 / Visual Studio 2005 / ASP.Net веб-приложение

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

Итак, у меня есть 3-х уровневое приложение - UI, BLL, DAL. В моем DAL я создал DataSets путем перетаскивания хранимых процедур из обозревателя серверов. Таким образом, строка подключения была жестко закодирована в файл набора данных.

Я был бы признателен, если бы кто-нибудь объяснил мне простой шаг за шагом, чтобы при передаче строки подключения в конструкторе настроек пользовательского интерфейса (основные проекты) в BLL, а затем в DAL.

Ответы [ 6 ]

1 голос
/ 23 мая 2009

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

Полагаю, кроме пользовательского интерфейса, все это проекты классов lib для BLL, DAL. В DAL у вас был бы конструктор набора данных, который вставляет строку подключения в app.config DAL class-lib prj. Теперь, если вам нужно сослаться на BAL выше DAL, который снова является классом lib prj, скопируйте раздел connectionStrings из app.config DAL и вставьте его в раздел connectionStrings app.Config BAL classlib prj. Здесь вы должны заметить, что имя строки подключения - это не просто myDataBaseConnStr. Это будет с подробной ссылкой на пространство имен, например, MyApp.DataLayer.DataSet.myDataBaseConnStr. Тот же процесс вы должны выполнить со слоем пользовательского интерфейса app.config или web.config. После того, как вы сделали это успешно, вы можете изменить в файле connectionString в корневом конфигурационном файле приложения уровня пользовательского интерфейса [web.config или app.config]. Таким образом, он всегда будет извлекать connectionString из уровня пользовательского интерфейса, поскольку это будет исполняемый AppDomain во время выполнения. Таким образом, вы можете изменить строку подключения и отразить ее в базовых значениях BAL и DAL.

Спасибо.

1 голос
/ 22 мая 2009

Я предполагаю, что дизайнер создаст вам tableAdapter, когда вы перетаскиваете sp. На адаптере есть свойство Connection, которое вы можете задать для адаптера, который будет использоваться для заполнения таблицы данных. Я согласен с другими парнями, что вам понадобится эта информация о соединении в файле конфигурации или в другом месте, где вы храните конфигурацию. Я также не фанат перетаскивания в дизайнер, но это должно работать для управления подключением к базе данных.

1 голос
/ 22 мая 2009

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

Строка подключения должна находиться только в одном месте в вашем приложении. Если все ваши уровни связаны со строкой подключения, то это проблема. Ваш DAL должен быть единственным уровнем, связанным со строкой соединения.

Хороший способ получить DAL для получения строки подключения - через IoC (Inversion of Control). Чтобы вам не приходилось передавать строку подключения через все конструкторы.

Наборы данных несколько устарели. Если вы работаете над новым приложением, вы можете использовать ORM, например, NHibernate или Linq

.
0 голосов
/ 23 мая 2009

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

Я прочитал в другом посте, что если у вас есть свойство с тем же именем (как в DLL) в настройках основного проекта, то подпроект (DLL) выбирает значение этого свойства, переопределяя значение установите его в своих настройках.

Какой-нибудь пример, как это сделать?

0 голосов
/ 22 мая 2009

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

  <connectionStrings>
    <add name="oracle" connectionString="Data Source=server; User ID=user; Password=password;"/>
  </connectionStrings>

Тогда в вашем коде C #:

string connString = ConfigurationManager.ConnectionStrings["oracle"].ConnectionString;

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

Удачи!

Рикардо.

0 голосов
/ 22 мая 2009

Способ, которым мы это делаем, - это включить строку подключения в наш файл web.config (app.config также работает). Пример:

<add key="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;User ID=username;Password=abc123"/>

Затем в DAL мы используем что-то вроде:

using (var connection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"])) {
    using (var command = new SqlDataAdapter("MyStoredProc", connection)) {
        command.SelectCommand.CommandType = CommandType.StoredProcedure;
        var categories = new DataSet();
        command.Fill(categories);
        return categories;
    }
}

Вы можете использовать ConfigurationManager.AppSettings ["Wh независимо"], чтобы извлечь значение, указанное в "Whither", из файла .config. Очень удобен и удобен для переключения между средой разработки, тестирования и производства.

...