我對 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 關注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消