EntityFramework和TransactionScope的不一致性

3

我正在开发一个组件,其中使用了Entity Framework 4.0。

在特定情况下,我需要使用TransactionScope

try
{
    using (TransactionScope t = new TransactionScope())
    {
        myEntity.MyObjectsOne.Add(new MyObjectOne());
        myEntity.MyObjectsTwo.Add(new MyObjectTwo());

        myEntity.SaveChanges();

        throw new Exception();

        t.Complete();
    }
}
catch (Exception e)
{
    // What should I do?
}

当事务失败并未完成时,myEntity仍将反映所做的更改,即添加了MyObjectOneMyObjectTwo

在这种情况下,为避免不一致性,最好采用什么样的最佳实践?


什么是上下文生命周期? - ken2k
该过程完成后,上下文的同一实例仍将被使用。 - JEPAAB
1个回答

5
通常处理这种情况的方法是在 catch 块中处置并重新加载实体,以便在作用域没有正确提交的情况下,您的实体会被重新加载,就像在对它进行任何更改之前一样。
更多详情请查看这个问题以及所有答案:撤消 Entity Framework 实体中的更改

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接