跟踪与非跟踪查询

跟踪与非跟踪查询

跟踪查询

返回实体类型的查询默认会被跟踪。这表示可以更改这些实体实例,然后通过 SaveChanges() 持久化这些更改。在以下示例中,将检测到对博客评分所做的更改,并在 SaveChanges() 期间将这些更改持久化到数据库中。

var blog = context.Blogs.SingleOrDefault(b => b.BlogId == 1);
blog.Rating = 5;
context.SaveChanges();Code language: JavaScript (javascript)

非跟踪查询

在只读方案中使用结果时,非跟踪查询十分有用。可以更快速地执行非跟踪查询,因为无需设置更改跟踪信息。如果不需要更新从数据库中检索到的实体,则应使用非跟踪查询。可以将单个查询替换为非跟踪查询。

var blogs = context.Blogs
    .AsNoTracking()
    .ToList();Code language: JavaScript (javascript)

也可以在上下文实例级别更改默认跟踪行为:

context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

var blogs = context.Blogs.ToList();Code language: JavaScript (javascript)
Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注