为了账号安全,请及时绑定邮箱和手机立即绑定

Microsoft.EntityFrameworkCore DbSet.Update

Microsoft.EntityFrameworkCore DbSet.Update

C#
摇曳的蔷薇 2022-10-15 15:02:23
我对 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跟踪实体。在这种情况下,您的第二个示例不会保存对商店的任何更改。EntityStateModified



查看完整回答
反对 回复 2022-10-15
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号