使用 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 之前附加它們。