EntityFramework和TransactionScope不一致

时间:2015-02-12 15:00:32

标签: c# entity-framework transactionscope

我正在开发一个使用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

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

1 个答案:

答案 0 :(得分:5)

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

请参阅此问题和所有答案以获取更多详细信息:Undo changes in entity framework entities