Зачем мне нужен UnitOfWork в EntityFramework4, вы можете уточнить? - PullRequest
1 голос
/ 01 декабря 2010

Я прыгаю на подножку и начинаю реализовывать UnitOfWork с шаблоном хранилища.Еще нужно найти пример, который работает с «Включить». Я использую код, сгенерированный EF, а не poco. ». Где я могу загрузить один?* Теперь мой вопрос. Я явно упускаю суть. Почему мне нужна единица работы?

У меня много транзакций, и я делаю Context.SaveChanges ();Если что-то пойдет не так, все будет откатано нет?Разве это не то, что представляет собой UnitOfwork?Если это так, то в EF4 уже встроен UnitOFwork в OBjectContext.

Зачем нужны дополнительные классы?Могли бы вы объяснить?Спасибо.

1 Ответ

2 голосов
/ 01 декабря 2010

Единица работы используется для сохранения в нескольких хранилищах как часть одной транзакции.

Например, если вы работаете с UserRepository и FooRepository , если первый проходит, второй отказывает, тогда транзакции не синхронизированы.

Единица работы реализована как оболочка для ObjectContext, то есть вы выполняете свою работу в обоих репозиториях, затем Commit в UoW Once , который обрабатывает изменения в обоих репозиториях. В случае сбоя одной или обеих операций вся транзакция завершается неудачей.

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

Вот пример EF4 / Repository / UoW.

Сторонники DDD утверждают, что единица работы не требуется для репозиториев, когда совокупные границы правильны.

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