使用 AsNoTracking
不好的例子:
var location = dbContext.Location
.Where(l => l.Location.ID == location_ID)
.SingleOrDefault();
return location;
由於上述程式碼只是在不修改或新增實體的情況下返回實體,因此我們可以避免跟蹤成本。
好例子:
var location = dbContext.Location.AsNoTracking()
.Where(l => l.Location.ID == location_ID)
.SingleOrDefault();
return location;
當我們使用函式 AsNoTracking()
時,我們明確地告訴實體框架實體不被上下文跟蹤。在從資料儲存中檢索大量資料時,這尤其有用。但是,如果要對未跟蹤的實體進行更改,則必須記住在呼叫 SaveChanges
之前附加它們。