实体框架保存更改

时间:2016-02-15 07:27:38

标签: c# ef-code-first entity-framework-6

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

2 个答案:

答案 0 :(得分:6)

来自doc (DbContext.SaveChanges)

  

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

如果您未对上下文进行任何更改,请致电SaveChanges

您可以详细了解详情here

  

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

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

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

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

答案 1 :(得分:1)

除非您这样做,否则无需致电SaveChanges()

  1. Add
  2. Update
  3. Delete