非跟踪查询No-Tracking Queries

有时,可能需要从查询中获取实体,但不能通过上下文跟踪这些实体。 在只读方案中查询大量实体时,这可能会导致更好的性能。 本主题所介绍的方法同样适用于查询使用 Code First 和 EF 设计器创建的模型。

新的扩展方法 AsNoTracking 允许以这种方式运行任何查询。 例如:

  1. using (var context = new BloggingContext())
  2. {
  3. // Query for all blogs without tracking them
  4. var blogs1 = context.Blogs.AsNoTracking();
  5. // Query for some blogs without tracking them
  6. var blogs2 = context.Blogs
  7. .Where(b => b.Name.Contains(".NET"))
  8. .AsNoTracking()
  9. .ToList();
  10. }