为什么DbSet.Local会自动执行检测更改?

时间:2016-09-09 11:02:14

标签: c# entity-framework

在我的最新问题中,有人指出DbSet.Local会自动执行检测更改 请参阅问题:Why is referencing DbSet.Local slow in a loop?

在答案评论中,此链接已发布https://msdn.microsoft.com/en-us/data/jj556205.aspx,其中列出了属性

  

默认情况下,实体框架会自动执行“检测更改”   调用以下方法时:

     
      
  • DbSet.Find
  •   
  • DbSet.Local
  •   
  • DbSet.Remove
  •   
  • DbSet.Add
  •   
  • DbSet.Attach
  •   
  • DbContext.SaveChanges
  •   
  • DbContext.GetValidationErrors
  •   
  • DbContext.Entry
  •   
  • DbChangeTracker.Entries
  •   

列表中有两个属性,我不确定为什么需要检测更改:find和local 我想可能需要它,因为可能有更多的DbSet实例,否则更改不会同步。

检测查找和本地更改的目的是什么?

1 个答案:

答案 0 :(得分:1)

从评论中发布的link我找到了答案。 如果DbSet.Local或DbSet.Find无法检测到更改,则不会获得处于已添加状态(尚未提交到DB)的实体