【发布时间】: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