亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號