我应该在哪里使用工作单位?为什么?

时间:2011-02-08 12:53:29

标签: unit-of-work entity-framework-ctp5

我想知道我应该在哪里使用工作单位?为什么?

  • 存储库级别?但是如果你需要2个存储库呢?
  • 服务水平?但是,如果您需要重用其他服务方法呢?
  • 控制器级别?但是,如果你不想在你的控制器中放置任何逻辑呢?

想知道它最好看的地方和应该使用的地方。我正在使用类似的实现:

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

(我正在使用带有实体框架的ASP.NET MVC 3)

感谢。

1 个答案:

答案 0 :(得分:4)

工作单元允许您在多个存储库中执行多个操作,并同时为所有这些操作系统调用Save(),这会调用SaveChanges(),这会将工作单元转换为事务。如果在Save()呼叫期间发生任何故障,则会回滚该操作。

因此,在您需要的任何地方使用工作单元,以确保在数据交易期间某些内容不会损坏。当您想要推迟交易直到完成一系列操作时,基本上使用一个工作单元。

这个posting非常好地概述了实体框架如何使用工作单元。