gpt4 book ai didi

c# - 对象上下文、存储库和事务

转载 作者:太空狗 更新时间:2023-10-30 00:47:18 24 4
gpt4 key购买 nike

我想知道在 Entity Framework 中使用事务的最佳方式是什么。

假设我有三个存储库:

 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

现在我有一个 Controller 类,它负责调用我的应用程序的不同服务和组件,显示正确的表单等。现在我想要做的是将一个 Controller 方法中发生的所有事情包装在一个交易,这样如果出现问题我可以回滚。

Controller 接受几个不同的服务对象,但对对象上下文一无所知。

我的问题是:

  1. 上下文是否也应该传递到服务层。
  2. 我如何在 Controller 中实现事务,以便服务中发生的任何事情直到一切都过去了,层才被提交。

抱歉,如果有点难以理解..

最佳答案

为什么您的 Controller 不知道 ObjectContext?

这就是我要放的地方。查看 - http://msdn.microsoft.com/en-us/magazine/dd882510.aspx - 这里的命令是提交/回滚 UnitOfWork(ObjectContext) 的命令。

如果您不想让您的 Controller 完全了解 EF(良好的设计),那么您希望将您的 ObjectContext 抽象为类似于上述链接中的方法的接口(interface)。 p>

关于c# - 对象上下文、存储库和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com