EntityFramework和TransactionScope不一致

JEP*_*AAB 3 c# entity-framework transactionscope

我正在开发一个使用Entity Framework 4.0的组件.

在特定情况下,我需要使用a 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?
}
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,为了避免不一致,最佳做法是什么?

Dav*_*ras 5

执行您需要做的事情的通常方法是在catch块中处置并重新装载您的实体,这样除非正确提交范围,否则您的实体将在应用任何更改之前重新加载.

有关更多详细信息,请参阅此问题和所有答案:撤消实体框架实体中的更改