Где я должен использовать единицу работы? и почему? - PullRequest
2 голосов
/ 08 февраля 2011

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

  • Уровень репозитория?Но что, если вам нужно 2 репозитория?
  • Уровень обслуживания?Но что, если вам нужно повторно использовать другие методы обслуживания?
  • Уровень контроллера?Но что, если вы не хотите использовать какую-либо логику в вашем контроллере?

Хотели бы знать, где его лучше всего увидеть и использовать.Я использую такую ​​реализацию:

using (var uow = UnitOfWorkFactory.Create())
{
... transaction go here
}

(я использую ASP.NET MVC 3 с Entity Framework)

Спасибо.

1 Ответ

4 голосов
/ 08 февраля 2011

Единица работы позволяет вам выполнять несколько действий в нескольких репозиториях и вызывать Save() для всех них одновременно, что вызывает SaveChanges(), что превратит единицу работы в транзакцию. Если во время вашего звонка Save() что-то не получается, операция откатывается.

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

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

...