【发布时间】:2016-03-17 00:04:19
【问题描述】:
如果我检测到数据库中的一条记录已被另一个进程更改并且该记录是我当前 dbSet 的成员,我如何更新该记录以反映已更改数据库记录的数据?据我了解,如果该项目已经存在,附加将失败。
我使用内存中的大部分数据来更新屏幕上的状态并允许用户更改数据。其他进程也是如此。
我正在使用 EF7(核心),它可能不像我刚接触 EF 那样聪明。
【问题讨论】:
标签: entity-framework
如果我检测到数据库中的一条记录已被另一个进程更改并且该记录是我当前 dbSet 的成员,我如何更新该记录以反映已更改数据库记录的数据?据我了解,如果该项目已经存在,附加将失败。
我使用内存中的大部分数据来更新屏幕上的状态并允许用户更改数据。其他进程也是如此。
我正在使用 EF7(核心),它可能不像我刚接触 EF 那样聪明。
【问题讨论】:
标签: entity-framework
您可以使用 Load() 方法从数据库中重新水化受影响的实体:
以防万一,首先要分离你的实体
DbContext.Entry(changed).State = EntityState.Detached;
DbContext.MyDbSet.Where(e => e.Id == changed.Id).Load();
如上,Load() 会将条目再次放入集合中。
在您使用它之前,您需要导入 Microsoft.Data.Entity 命名空间
【讨论】: