在只读操作后保存更改是否有意义?实体被加载到缓存,但没有任何变化,应该在处置之前保存更改吗?
来自doc (DbContext.SaveChanges
):
将在此上下文中所做的所有更改保存到基础数据库。
如果您没有对上下文进行任何更改,那么调用SaveChanges
没有任何意义。
你可以在here中详细了解这个
实体可以处于由EntityState枚举定义的五种状态之一中。这些州是:
- 补充:实体正在被上下文跟踪,但在数据库中尚不存在
- 未更改:实体正在被上下文跟踪并存在于数据库中,并且其属性值未从数据库中的值更改
- 已修改:实体正由上下文跟踪并存在于数据库中,并且已修改其部分或全部属性值
- 已删除:实体正在被上下文跟踪并存在于数据库中,但在下次调用SaveChanges时已标记为从数据库中删除
- 已分离:上下文未跟踪实体
SaveChanges为不同状态的实体做了不同的事情:
- SaveChanges不会触及未更改的实体。对于处于Unchanged状态的实体,不会向数据库发送更新。
- 添加的实体将插入到数据库中,然后在SaveChanges返回时变为Unchanged。
- 修改后的实体在数据库中更新,然后在SaveChanges返回时变为Unchanged。
- 已删除的实体将从数据库中删除,然后从上下文中分离。
除非你这样做,否则你不需要打电话给SaveChanges()
:
Add
Update
Delete