Многоуровневая архитектура с использованием Entity Framework, где создается контекст - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть многоуровневая архитектура. У меня есть доступ к данным, бизнес-сервис и уровень пользовательского интерфейса. Я использую EF 4.0 и MVC. Теперь вопрос в том, где создать контекст в 1. Business Service, передать контекст в Dataacess и вернуть IQuerable на уровень Data Acess. 2. Непосредственное использование контекста на уровне доступа к данным и использование бизнес-сервисов в качестве прокси-сервера (то есть, в основном, передачи информации из DataAcecss и UI)

Как лучше всего создать «контекст». Все доступные в сети примеры, показывающие создание контекста на уровне доступа к данным.

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Согласны с @ Робертом Харви и @ Джакобсоном.

DAL должен обрабатывать контекст, с одним исключением:

Если вы используете шаблон Единица работы .

UoW является оболочкой для контекста, поэтому, когда вы «создаете новый UoW», вы фактически создаете новый контекст данных. Поскольку единица работы обрабатывает множество репозиториев, она не может быть создана в самом DAL.

UoW (в контексте MVC) будет передаваться в контроллеры, которые передаются в репозиторий, который затем запрашивается.

В этом случае вы бы обновили UoW (и, следовательно, контекст) во время запроса приложения событий (global.asax) и удалили его в конце запроса (предпочтительно с использованием контейнера DI).

1 голос
/ 09 ноября 2010

Как утверждает @Robert Harvey, примеры имеют правильную идею.EF Context относится к вашему механизму персистентности (например, к базе данных SQL Server) и поэтому относится к уровню доступа к данным.

Смысл такого многоуровневого подхода состоит в том, чтобы сделать ваш механизм персистентности невидимым для слоев над ним, чтобы вы могли, например, менять поставщиков баз данных, не изменяя код вашего бизнеса / интерфейса пользователя.

...