使用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后它不会消失。
我感觉我在这里做了一些根本错误的事情:)
答案 0 :(得分:2)
实体框架不支持内存中跟踪实体的事务 - 您在ObjectContext中看到的“ObjectStateManager”不是事务资源。 TransactionScope仅“适用”在其中完成的数据库操作(查询,更新),而不是内存操作,例如操作对象图(这就是你所做的)。