4

这里有一个答案 来解释如何使用实体框架进行事务但是该解决方案首先不适用于代码。我已经尝试过,我的测试表明以下确实有效

using (var scope = new TransactionScope())
{
        DBContext1.SaveChanges()
        If (ForceFailure) return 0  // used in testing
        DBContext2.SaveChanges()
        scope.Complete();
 }

但是我感到紧张,因为我不再将参数传递给 SaveChanges 或调用 AcceptAllChanges

如何确定我是否可以信任我的解决方案?

4

1 回答 1

2

SaveChanges(Boolean)是的一部分ObjectContext,不是DbContext。请注意,不推荐使用 in 中的方法SaveChanges(Boolean)ObjectContext支持SaveChanges(SaveOptions).

如果您仍想使用DbContext,您可以重载自己的SaveChanges方法以使用IObjectContextAdapter.ObjectContext,例如使用扩展方法。

于 2013-04-10T14:11:17.343 回答