相关疑难解决方法(0)

AsNoTracking()的全局设置?

原来我相信

context.Configuration.AutoDetectChangesEnabled = false;
Run Code Online (Sandbox Code Playgroud)

会禁用更改跟踪.但不是.目前我需要AsNoTracking()在所有LINQ查询上使用(对于我的只读层).是否有全局设置禁用DbContext上的跟踪?

entity-framework change-tracking

51
推荐指数
3
解决办法
2万
查看次数

DbContext AutoDetectChangesEnabled设置为false检测更改

我有点难过.根据我的阅读设置DbContext.AutoDetectChangesEnabled,false应该禁用需要调用的更改跟踪DbContext.DetectChanges,以便识别要发送到数据库的更改.

但是,从我的下面的日志中可以清楚地看到,dbContexts更改跟踪器正在注册更改,即使设置为false也是如此.

我错过了什么吗?

实体框架版本:5.0.0.0

DbContext类

public class ProjectContext : DbContext {
    public DbSet<Project> Projects {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

控制器类

private ProjectContext db = new ProjectContext();

public method(){
    Project p = new Project("uniqueName");
    db.Configuration.AutoDetectChangesEnabled = false;
    db.Projects.Add(p);
    DebugChangeTracker();
    db.SaveChanges();

    db.Projects.First().ProjectName = "a differentName!";
    DebugChangeTracker();
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

记录方法

    private void DebugChangeTracker()
    {
        var path = "C:\\mypath\\";
        path = path + Util.GetMsSinceEpoch().ToString() + "changeTracker.log";

        using (StreamWriter sw = new StreamWriter(path))
        {
            var changeTracker = db.ChangeTracker;
            var entries = changeTracker.Entries(); …
Run Code Online (Sandbox Code Playgroud)

entity-framework dbcontext entity-framework-5

44
推荐指数
3
解决办法
5万
查看次数