设置 QueryTrackingBehavior.NoTracking 即可,有两种设置方法
方法1:在向依赖注入容器注册 DbContext 时设置
services.AddDbContextPool<ReadOnlyDbContext>(
options =>
{
options.UseSqlServer(GlobalSettings.ConnectionString);
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});
方法2:在 DbContext 的构造函数中设置
public class ReadOnlyDbContext : DbContext
{
public ReadOnlyDbContext(DbContextOptions<ReadOnlyDbContext> options)
: base(options)
{
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
}
}
更进一步地可以关闭 AutoDetectChanges
public class ReadOnlyDbContext : DbContext
{
public ReadOnlyDbContext(DbContextOptions<ReadOnlyDbContext> options)
: base(options)
{
ChangeTracker.AutoDetectChangesEnabled = false;
}
}