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

Обычно проекты создаются с использованием следующего метода:

Создайте решение с 1 классом DAL (у него есть файл dbml). Создайте проект 2-го класса с именем BLL, который является бизнес-уровнем, создающим операции CRUD. Наконец есть проект Asp .Net.

Первое, что я делаю, это в DAL (уровень доступа к данным) я создаю соединение с базой данных и перетаскиваю необходимые таблицы. Я создаю код для получения, редактирования данных и т. д. в проекте BLL. Затем мне нужно добавить строку подключения в проект Asp .Net, чтобы он мог подключаться к базе данных.

Проблема, с которой я всегда сталкиваюсь, заключается в том, что когда я развертываю проект на тестовом сервере, я могу легко изменить строку подключения web.config проектов Asp .Net, но при первом запуске приложение прерывается (не удается подключиться к базе данных sql), как в DAL по-прежнему просматривает исходную строку подключения. Итак, что мне нужно сделать, это установить новую строку подключения в компиляции проекта DAL и скопировать ее, после чего все будет работать.

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

Есть ли трюки, которые мне не хватает, или аддоны, которыми я мог бы воспользоваться?


person Computer    schedule 31.07.2014    source источник
comment
Вы сами догадались. Да, используйте файл конфигурации.   -  person Sriram Sakthivel    schedule 01.08.2014
comment
Вы не используете web.config в своем проектном решении?   -  person Dennis R    schedule 01.08.2014
comment
Я использую файл web.config, но, как я уже сказал, веб-проект ASP .Net подключается к новой строке подключения, НО мне нужно перекомпилировать DAL, который, похоже, использует предыдущее подключение. Обратите внимание, что здесь 3 разных проекта.   -  person Computer    schedule 01.08.2014
comment
Почему его нужно перекомпилировать? Вам нужно прочитать строку подключения из web.config, а не жестко кодировать ее.   -  person Sriram Sakthivel    schedule 01.08.2014
comment
@SriramSakthivel обратите внимание, что соединение основано на двух проектах.   -  person Computer    schedule 01.08.2014
comment
Моя ошибка, тогда откуда берется строка подключения?   -  person Sriram Sakthivel    schedule 01.08.2014
comment
@Computer Я понимаю, что у вас есть три разных проекта, но разве они не размещены в рамках одного проектного решения? Если ваш проект Web может прочитать новую строку подключения, то почему проект DAL не может прочитать новую строку подключения из web.config, которая является частью веб-проекта, но может быть доступна из ваших проектов Web/DAL/BLL?   -  person Dennis R    schedule 01.08.2014
comment
Просто используйте ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString; из вашего проекта DLL, поэтому все проекты будут ссылаться на одни и те же обновленные настройки подключения.   -  person Dennis R    schedule 01.08.2014


Ответы (1)


Если вы не хотите использовать 2 строки подключения (одна в web.config вашего пользовательского интерфейса, а другая в вашем доступе к данным) и вы не хотите зависеть от конкретной базы данных (в данном случае SQL Server), вы можете использовать только единая строка подключения в пользовательском интерфейсе web.config.

Когда вы это сделаете, на вашем DA просто используйте DLL Microsoft.Practices.Enterprise.Data, чтобы вы не зависели от SQL для соединений.

В следующий раз, когда вы захотите перенести свое приложение, например, с SQL на Oracle, поскольку вы больше не используете SQLConnection, вы просто измените строку подключения и готово! Ваш переход на Oracle выполняется за 1 минуту.

person sevazz    schedule 31.07.2014
comment
Хорошо, это похоже на то, что мне нужно. Я буду исследовать Microsoft.Practices.Enterprise.Data. Любые примеры, на которые вы могли бы мне указать, были бы замечательными. Если это сработает, я отмечу ваш ответ как ответ - спасибо - person Computer; 01.08.2014
comment
Есть 2 разных способа сделать это: использовать dll или создать свой собственный класс, используя ссылку System.Data.common.dbconnection. Помните, как только вы реализуете это, измените все ваши sqlconnections или ссылки sql для вашего вызова в базу данных (ваш класс или dll), поэтому теперь вы не зависите от sql для подключения к вашей базе данных. - person sevazz; 01.08.2014