Global setting for AsNoTracking()?

前端 未结 6 1590
礼貌的吻别
礼貌的吻别 2020-11-27 17:30

Originally I believed that

context.Configuration.AutoDetectChangesEnabled = false;

would disable change tracking. But no. Cur

6条回答
  •  一整个雨季
    2020-11-27 17:49

    What about simply exposing method like this on your derived context and use it for queries:

    public IQueryable GetQuery() where T : class {
        return this.Set().AsNoTracking();
    }
    

    Setting AsNoTracking globally is not possible. You must set it per each query or per each ObjectSet (not DbSet). The latter approach requires using ObjectContext API.

    var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
    var set = objectContext.CreateObjectSet();
    set.MergeOption = MergeOption.NoTracking;
    // And use set for queries
    

提交回复
热议问题