EF - и шаблон репозитория - несколько контекстов - PullRequest
2 голосов
/ 07 июля 2010

Я столкнулся с некоторыми проблемами с контекстом в EF в ASP.MVC2.

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

(using <name>Context = new (... etc ...) ) { ... }

Репозиторий исключает инициализационный контекст для каждой операции, но не располагает контекстом.

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

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

Ответы [ 3 ]

4 голосов
/ 07 июля 2010

Контекст - это единица работы, поэтому вам нужен один на веб-запрос.

Следовательно, вы должны использовать внедрение конструктора (то есть аргумент конструктора) для предоставления единого контекста для всех хранилищ и удаления его в конце запроса.

Большинство платформ DI делают это автоматически.

2 голосов
/ 07 июля 2010

Вот хороший пост относительно шаблона репозитория поверх EF:

http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/20/using-repository-pattern-with-entity-framework.aspx

Вы также можете проверить сообщения о внедрении шаблона Unit of Work:

http://blogs.microsoft.co.il/blogs/gilf/archive/2010/02/05/using-unit-of-work-pattern-with-entity-framework.aspx

http://devtalk.dk/2009/06/09/Entity+Framework+40+Beta+1+POCO+ObjectSet+Repository+And+UnitOfWork.aspx

0 голосов
/ 02 октября 2010
...