查询DbSet时是否有“ EF核心方式”考虑本地更改?
我想尊重每个任务只调用一次DbContext.SaveChanges()
的模式,但是如果直接将查询直接发送到数据库,似乎本地状态和数据库状态之间的断开会变得非常迅速。
示例:
我更新了DbSet中的某些元素
var results = db.Entity1.Where(e => e.date > expectedDate);
foreach(var result in results){
e.field = true;
}
然后,查询相同的DbSet
db.Entity1.Where(e => e.field == false)
第二个查询返回在第一个块中更改的行,因为该查询直接进入数据库而无需考虑本地更改。我希望第二个查询只返回数据库和本地e.field == false
所在的行。
答案 0 :(得分:0)
如果您希望按逻辑组提交更改,同时避免有关查询数据库和Local
缓存的问题,那么请先将需要使用的所有实体加载到{{1 }}缓存,仅在Local
缓存上运行,最后在Local
上运行。
在您的示例中,您将拥有这个。
SaveChanges()