【问题标题】:"unexpected number of rows (0), Entities may have been modified..." when calling SaveChangesAsync“意外的行数 (0),实体可能已被修改...”调用 SaveChangesAsync 时
【发布时间】:2015-09-18 15:35:24
【问题描述】:

我有一个简单的 WPF 网格,它使用实体框架从数据库加载数据,我需要允许用户编辑网格中的数据并将更新保存到数据库。

不幸的是,当我尝试通过调用 SaveChangesAsync() 保存更新时,出现以下异常:

System.Data.Entity.Core.OptimisticConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

调用是在我的 ViewModel 类之一中进行的:

...   

   List<Adjustment> changesList = [ here I load the current content of the GridControl ]

   MyDbProxy dataProxy = new MyDbProxy();

   await dataProxy.SaveAdjustments(changesList);

而且包装DB的类很简单:

public class MyDbProxy {
   private readonly MyDb _db;

   public MyDbProxy() {
      _db = new MyDb();
   }
...
   public async Task SaveAdjustments(IEnumerable<Adjustment> changesList) {
      using (_db) {
         foreach (var a in changesList) {
            _db.Adjustments.Attach(a);
            _db.Entry(a).State = EntityState.Modified;
         }
         await _db.SaveChangesAsync();
      }
   }
}

【问题讨论】:

    标签: c# wpf ado.net-entity-data-model savechanges optimistic-concurrency


    【解决方案1】:

    此异常抛出是因为您创建了一个新对象并告诉 EF 它使用 EntityState.Modified 进行了修改

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多