删除和查询,不带DbContext.SaveChanges

时间:2017-01-16 10:50:20

标签: c# entity-framework entity

实体专有技术问题。给出以下代码:

...
var entitiesToRemove = dbSet.Where (entity => entity.TimeToLive > 5);
dbSet.RemoveRange(entitiesToRemove);
var resultEntities = dbSet.Where(entity => /* some condition that will also match before deleted entities*/);
...

问题:预先删除的实体是否也会包含在resultEntities中?我是否应在DbContext.SaveChanges之后致电dbSet.RemoveRange

THX

3 个答案:

答案 0 :(得分:1)

是的,我认为DbContext.SaveChanges应该追求dbSet.RemoveRange

答案 1 :(得分:1)

是的,预先删除的实体将包含在resultEntities中。因为RemoveRange没有反映到数据库中。然后,当您获得resultEntites的结果时,您正在查询数据库,因此它也会导致删除的值。

如果您不希望显示已删除的值,则应在Dbcontext.Savechanges()之后致电RemoveRange

希望这有帮助。

答案 2 :(得分:1)

在进行进一步处理之前,您需要执行dbcontext.SaveChanges()。 在dbSet.RemoveRange(entitiesToRemove)中,EF只标记了要删除的实体。只有在调用SaveChanges()后才会反映db。