查询时如何尊重本地变化?

时间:2019-07-26 17:41:39

标签: c# entity-framework-core

查询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所在的行。

1 个答案:

答案 0 :(得分:0)

如果您希望按逻辑组提交更改,同时避免有关查询数据库和Local缓存的问题,那么请先将需要使用的所有实体加载到{{1 }}缓存,仅在Local缓存上运行,最后在Local上运行。

在您的示例中,您将拥有这个。

SaveChanges()