【发布时间】:2011-08-26 14:58:08
【问题描述】:
我在 EF 和事务处理方面遇到了一点问题。
我正在尝试这样做:
using(TransactionScope scope = new TransactionScope())
{
using(MyEntities model = new MyEntities())
{
MyT thing = new MyT{ Value1 = "bla", Value2 = "bla2", Value3 = "foo" };
model.MyT.AddObject(thing);
model.SaveChanges();
thing.Value4 = Service.Call("bar");
// this call causes an exception in MSDTC
model.SaveChanges();
scope.Complete();
}
}
我这样做的原因是因为我想插入到数据库中,所以 MyT 有一个唯一的 id,我在拨打电话时将其传递给服务,然后从服务中取回一个唯一的 ref 和状态,描述什么在通话期间发生,然后我需要附加到记录中。
我的理解是,在单个事务中,您只能更新一次记录/进行插入调用,但您不能同时执行这两种操作,因为这会由于某种原因造成问题……我曾经有一篇 MSDN 文章解释过无法做到这一点的一些合乎逻辑的原因(可能与锁定有关)。
所以我的问题是如何解决这个问题,但要确保在任何这些调用中发生任何故障时我仍然可以回滚。
【问题讨论】:
-
您的问题是什么?您发布的代码如何工作?我觉得还可以。
-
异常是一个 com+ 异常,它简单地读取“com+ 对象中发生异常”就是这样......事件日志中没有任何内容也没有帮助。
标签: c# entity-framework msdtc