Уровень доступа к данным в ASP.Net: где я могу создать соединение? - PullRequest
1 голос
/ 31 декабря 2010

Если я хочу создать 3-уровневое приложение ASP.Net (Уровень представления, Бизнес-уровень, Уровень доступа к данным), где лучше всего создавать объекты Соединения?

До сих пор я использовал вспомогательный класс в своем уровне представления для создания IDbCommand из ConnectionString в web.config на каждой странице и передавал его классам / методам DAL.

Теперь я не уверен, не следует ли эту часть как-то включить в DAL, потому что она, очевидно, является частью доступа к данным. DAL находится в отдельно скомпилированном проекте, поэтому у меня нет доступа к web.config и я не могу получить доступ к строке подключения (верно?).

Какая лучшая практика здесь?

Ответы [ 2 ]

4 голосов
/ 31 декабря 2010

Краткий ответ:

Объекты Connection, которые представляют зависимость от базы данных, должны быть созданы (и известны только to) уровня доступа к данным.

Длинный ответ:

Когда вы говорите «3 уровня», вы действительно имеете в виду «уровень» или «слой»?Первый предполагает жесткую границу, такую ​​как уровень обслуживания, между каждым уровнем.Последнее является просто логическим разделением в пределах одного контекста приложения.Кроме того, определите, каким образом DAL является «отдельно скомпилированным проектом»?Он может получить доступ к файлу конфигурации для любого контекста приложения, в котором выполняется код.Если это его собственный уровень, он будет иметь какой-то сервис или что-то, что имеет конфигурацию.Если это просто слой, он может получить доступ к основной конфигурации приложения.

В идеале все, что связано с базой данных и / или зависит от нее, должно существовать только в DAL.Остальная часть домена приложения не должна беспокоиться о базе данных.

0 голосов
/ 31 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...