如果我检测到数据库中的记录已被另一个进程更改并且该记录是我当前dbSet的成员,那么如何更新该记录以反映更改的数据库记录的数据?据我了解,如果项目已经存在,附加将失败。
我在内存中使用大量数据来更新屏幕上的状态,并允许用户更改数据。其他流程也是如此。
我正在使用EF7(核心),这可能不是那么聪明,因为我不熟悉EF。
答案 0 :(得分:2)
您可以使用Load()方法从数据库中重新水化受影响的实体:
以防万一,首先让您的实体分离
DbContext.Entry(changed).State = EntityState.Detached;
DbContext.MyDbSet.Where(e => e.Id == changed.Id).Load();
在上面, Load()将再次进入集合。
在使用它之前,您需要导入 Microsoft.Data.Entity 命名空间