如果我检测到数据库中的一条记录已被另一个进程更改,并且该记录是我当前 dbSet 的成员,我如何更新该记录以反射(reflect)更改的数据库记录的数据?据我了解,如果该项目已经存在,附加将会失败。
我使用内存中数据的很大一部分来更新屏幕上的状态并允许用户更改数据。其他进程也做同样的事情。
我正在使用 EF7(核心),这可能不是那么聪明,因为我是 EF 新手。
最佳答案
您可以使用 Load() 方法从数据库中重新水合受影响的实体:
为了以防万一,首先要分离你的实体
DbContext.Entry(changed).State = EntityState.Detached;
DbContext.MyDbSet.Where(e => e.Id == changed.Id).Load();
上面,Load()会将条目再次放入集合中。
在使用它之前,您需要导入Microsoft.Data.Entity命名空间
关于entity-framework - 如果数据库中的记录发生更改,如何更新 dbSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038993/