我对 EntityFrameworkCore 比较陌生。我看到了一些使用 Update 函数的代码,这引起了我的注意。问题基本上是“为什么要使用它?”有什么区别:var m = await context.MyModel.Where(e => e.Id == model.Id).FirstOrDefaultAsync();if (m != null){ m.Foo = model.Foo; m.Bar = model.Bar; context.MyModel.Update(m); await context.SaveChangesAsync();}和var m = await context.MyModel.Where(e => e.Id == model.Id).FirstOrDefaultAsync();if (m != null){ m.Foo = model.Foo; m.Bar = model.Bar; await context.SaveChangesAsync();}从我已经阅读的内容来看,更新会将 MyModel 中的所有属性标记为已修改,但是这两者之间的结果有什么区别?据我所知,当我调用“SaveChanges”时,无论“更新”如何,修改后的字段都将被保存,不同之处在于,如果我不“更新”,唯一将被修改的两个属性是 Foo 和 Bar,并且在“更新”的情况下所有这些都将被修改?我没有找到任何解释为什么使用“更新”更可取,反之亦然。
1 回答

UYOU
TA贡献1878条经验 获得超4个赞
假设context
没有禁用更改跟踪,什么都没有。如果上下文没有跟踪要更新的实体(例如context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
,或者您context.MyModel.AsNoTracking()...
用于查询),则调用将使用ofDbSet<T>.Update
跟踪实体。在这种情况下,您的第二个示例不会保存对商店的任何更改。EntityState
Modified
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消