实体专有技术问题。给出以下代码:
...
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
答案 0 :(得分:1)
是的,我认为DbContext.SaveChanges
应该追求dbSet.RemoveRange
答案 1 :(得分:1)
是的,预先删除的实体将包含在resultEntities
中。因为RemoveRange
没有反映到数据库中。然后,当您获得resultEntites
的结果时,您正在查询数据库,因此它也会导致删除的值。
如果您不希望显示已删除的值,则应在Dbcontext.Savechanges()
之后致电RemoveRange
。
希望这有帮助。
答案 2 :(得分:1)
在进行进一步处理之前,您需要执行dbcontext.SaveChanges()。 在dbSet.RemoveRange(entitiesToRemove)中,EF只标记了要删除的实体。只有在调用SaveChanges()后才会反映db。