【问题标题】:Where should i use the unit of work ? and why?我应该在哪里使用工作单元?为什么?
【发布时间】:2023-03-16 07:23:01
【问题描述】:

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

  • 存储库级别?但是,如果您需要 2 个存储库怎么办?
  • 服务水平?但是,如果您需要重用其他服务方法怎么办?
  • 控制器级别?但是,如果您不想在控制器中添加任何逻辑怎么办?

想知道它的最佳位置和应该使用的位置。我正在使用类似的实现:

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 所以你说的其实放在哪里都没关系?你只在需要时使用它?
    • @Rushino 仅仅因为您可以使用它,并不意味着您应该使用它。实体框架似乎非常接近于 Martin Fowler 在企业应用程序架构模式中制定的剧本。绝对推荐阅读它,它将让您深入了解实体框架(以及几乎任何 ORM)是如何在更高级别布局的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多