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