理解:

EFCore通过一种机制实时追踪实体的属性是否有改变的一种机制,比如下方代码

通过EFCore查出来的数据List集合里的实体,在item.Manager = "菲菲";属性改变后,EFCore自动将实体的状态更改为Modified,

context.SaveChanges();只会提交状态标记为“Modified”的实体对象
 IQueryable<Classes> List = context.Classeses.Where(s => s.Name.Contains("二年"));
                foreach (var item in List)
                {
                    item.Manager = "菲菲";
                }
context.SaveChanges();

等价代码

 IQueryable<Classes> List = context.Classeses.Where(s => s.Name.Contains("二年")).AsNoTracking();
                foreach (var item in List)
                {
                    item.Manager = "菲菲";
                    context.Entry(item).State = EntityState.Modified;
                }
                context.SaveChanges(); 

在上述代码里我们通过EFCore查询实体时,设置实体的状态为不追踪,取消追踪性能会更好。但是有相关更改操作的时候要手动标记实体更改状态

context.Entry(item).State = EntityState.Modified;
如果不手动标记,context.SaveChanges();不会提交更改