我正在研究Entity Framework 4.1。这里使用AddObject()将控制添加到数据库中并保存起来使用SaveChange()方法。
但是一旦我删除了添加的控件并尝试再次添加,我一次又一次地收到此错误(存储更新,插入或删除语句影响了意外的行数(0)。实体可能已被修改或删除因为实体已加载。刷新ObjectStateManager条目。)但无法添加它。一旦我关闭我的应用程序然后尝试添加然后我能够添加该控件。
我试图在这里搜索很多,但是找不到解决办法。因为我是实体框架领域的新生。
答案 0 :(得分:0)
在这种情况下,我在每次操作(如添加,删除和修改)之后调用Entity框架对象上下文的SaveChange()方法。但我背靠背却异常。它得到了解决 通过调用这样的方法 public void Save(对象实体) { 使用(var transaction = Connection.BeginTransaction()) {
try
{
SaveChanges();
transaction.Commit();
}
catch (OptimisticConcurrencyException)
{
if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Deleted || ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Modified)
this.Refresh(RefreshMode.StoreWins, entity);
else if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Added)
Detach(entity);
AcceptAllChanges();
transaction.Commit();
}
}
}