繁体   English   中英

实体框架保存更改

[英]Entity framework save changes

在只读操作后保存更改是否有意义? 实体被加载到缓存,但没有任何变化,应该在处置之前保存更改吗?

来自doc( DbContext.SaveChanges

将在此上下文中所做的所有更改保存到基础数据库。

如果您没有对上下文进行任何更改,则调用SaveChanges没有任何意义。

您可以详细阅读更多关于这个这里

实体可以处于由EntityState枚举定义的五种状态之一中。 这些州是:

  • 补充:实体正在被上下文跟踪,但在数据库中尚不存在
  • 未更改:实体正在被上下文跟踪并存在于数据库中,并且其属性值未从数据库中的值更改
  • 已修改:实体正由上下文跟踪并存在于数据库中,并且已修改其部分或全部属性值
  • 已删除:实体正在被上下文跟踪并存在于数据库中,但在下次调用SaveChanges时已标记为从数据库中删除
  • 已分离:上下文未跟踪实体

SaveChanges为不同状态的实体做了不同的事情:

  • SaveChanges不会触及未更改的实体。 对于处于Unchanged状态的实体,不会向数据库发送更新。
  • 添加的实体将插入到数据库中,然后在SaveChanges返回时变为Unchanged。
  • 修改后的实体在数据库中更新,然后在SaveChanges返回时变为Unchanged。
  • 已删除的实体将从数据库中删除,然后从上下文中分离。

除非你这样做,否则你不需要调用SaveChanges()

  1. Add
  2. Update
  3. Delete

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM