实体框架 - 模型在失败的事务后不会更新

时间:2012-06-25 07:20:24

标签: entity-framework transactions transactionscope rollback

使用Entity Framework(4.3.1.0)处理项目。我试图找出如何使我的代码作为一个事务工作,但对我来说,似乎我的模型在事务失败后没有更新。

让我告诉你:

using (TransactionScope trans = new TransactionScope())
{
    _database.Units.Add(new Unit{ ... });
    var a = false;
    if (a)
    {
        trans.Complete();
        Refresh();
    }
}

Refresh();

我所经历的是,在事务管理器完成后,它不会回滚到之前的状态。当我运行刷新方法时,我遍历单位中的所有项目,并将值插入到ObservableCollection中,我在WPF窗口中显示在屏幕上。

这个机制适用于我成功执行事务的时候,但是当我运行上面的代码时,网格会使用新添加的Unit进行更新,但是在事务发生后运行Refresh后它不会消失。

我感觉我在这里做了一些根本错误的事情:)

1 个答案:

答案 0 :(得分:2)

实体框架不支持内存中跟踪实体的事务 - 您在ObjectContext中看到的“ObjectStateManager”不是事务资源。 TransactionScope仅“适用”在其中完成的数据库操作(查询,更新),而不是内存操作,例如操作对象图(这就是你所做的)。