Entity Framework 使用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。