【发布时间】:2009-06-29 00:22:03
【问题描述】:
我想知道在实体框架中使用事务的最佳方式是什么。
假设我有三个存储库:
Repo1(ObjectContext context)
Repo2(ObjectContext context)
Repo3(ObjectContext context)
以及一个接受三个存储库的服务对象:
Service(Repo1 repo1,Repo2 repo2, Repo3 repo3)
Serive.CreateNewObject <- calls repo1, repo2, repo3 to do stuff.
因此,当我创建服务时,我首先创建了三个存储库并将它们传递下去,每个存储库都有一个对象上下文,因此我的代码如下所示:
MyObjectContext context = new MyObjectContext();
Repo1 repo = new Repo1(context);
// etc
现在我有一个控制器类,它负责调用我的应用程序的不同服务和组件,显示正确的表单等。现在我想要做的是将发生在控制器方法之一中的所有内容包装在一个事务,这样如果出现问题我可以回滚。
控制器接受几个不同的服务对象,但对对象上下文一无所知。
我的问题是:
- 是否也应将上下文传递到服务层。
- 如何在控制器中实现事务,以便服务中发生的任何事情 在一切都过去之前,不会提交层。
对不起,如果有点难以理解..
【问题讨论】:
标签: c# entity-framework transactions