【问题标题】:Is passing an ObjectContext a good idea传递 ObjectContext 是个好主意吗
【发布时间】:2012-10-05 01:33:28
【问题描述】:

如果我有两种不同的方法 - 一种删除用户,另一种删除用户的地址(为了论证,我们假设它们必须被删除并且不能设置为非活动状态)。如果每个方法都创建该类型的存储库以删除记录,那么在第一个方法中创建 ObjectContext 然后将其传递给另一个方法是否被认为是一种好习惯?如果是这样,它应该按值传递还是引用传递?这样做会产生什么问题或问题?

【问题讨论】:

    标签: .net entity-framework-4


    【解决方案1】:

    是的,这是一种有效的方法。共享一个上下文以作用于多个存储库以完成特定用例的模式称为工作单元模式。

    http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

    http://joel.net/repository-and-unit-of-work-for-entity-framework-ef4-for-unit-testing

    请注意,如果您需要事务完整性,您必须共享一个上下文。如果您使用单独的上下文,并且您的第二次删除失败,您将无法回滚第一次删除。

    【讨论】:

    • 我听说过 UofW 模式,甚至读过一些关于它的内容,但直到我阅读了第一个链接中的博客后,我才真正明白。非常感谢!!!
    • 作为后续问题,我看到他们为工作单元创建接口,然后让 Context 类实现接口。但是,我只有 .edmx 文件,其中代码是由工具生成的。在这种情况下我将如何实现接口?是否需要创建一个继承自 .edmx 类的类,然后实现 IUnitOfWork??
    • 我从未使用过 .edmx 文件(我一直是代码优先)所以很遗憾我不知道如何回答您的后续问题。建议您将其作为新问题发布。
    • 我会的。谢谢你的帮助。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2020-03-29
    • 1970-01-01
    • 2013-06-22
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多