EF где создать и расположить контекст?В бизнес-слое или в хранилище? - PullRequest
1 голос
/ 30 октября 2010

Лучше ли создавать и размещать контекст в классе репозитория? или лучше создать контекст в службе и передать его в каждый репозиторий посредством внедрения зависимостей?

Если он создается только в хранилище, методы не могут выполнять отложенную загрузку (бесполезно возвращать IQueryable) на уровне обслуживания / бизнеса.

1 Ответ

1 голос
/ 05 января 2012

Наиболее определенно создайте его вне хранилища. Если вы создаете его внутри службы, код тесно связан с типом экземпляра контекста. Это означает, что вы не можете иметь одно из своих хранилищ без EF. что вы действительно хотите сделать, так это наложить слой на вашу систему, чтобы хранилище могло использовать EF в качестве источника данных или что-то еще (например, таблицу в памяти).

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

Взгляните на http://blog.staticvoid.co.nz/2011/10/staticvoid-repository-pattern-nuget.html, это мой взгляд на то, как репозиторий должен быть реализован с EF4, также я создал пакет nuget для реализации этого шаблона таким образом, чтобы код получился Разобщенная система репозитория составляет около 4 строк.

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