entity-framework - 如果数据库中的记录发生更改,如何更新 dbSet?

标签 entity-framework

如果我检测到数据库中的一条记录已被另一个进程更改,并且该记录是我当前 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/

相关文章:

ASP.NET 身份数据库第一个自定义用户和角色

entity-framework - 未知服务器标记 'asp:EntityDataSource'

c# - Entity Framework 打开连接

c# - 为什么在 Edmx 做同样的工作时使用 EF 5.X DbContext Generator?

c# - 仅比较 Entity Framework 6 中日期时间的时间与 odp.net Oracle 12c

c# - 设置 1 :0. .1 关系,以便清空引用会自动删除引用的对象?

c# - Razor Foreach 循环不返回所有数据

.net - Entity Framework 自定义查询功能

c# - 匹配评论相同餐厅的用户

c# - EF Core 6 启动项目在尝试搭建非启动项目的项目时不引用 EFCore.Design