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