DbContext AutoDetectChangesEnabled establecido en falsos cambios de detección
Estoy un poco perplejo. De lo que he leído configurando elDbContext.AutoDetectChangesEnabled
afalse
debe deshabilitar el seguimiento de cambios que requiere uno para llamarDbContext.DetectChanges
para identificar los cambios a enviar a la base de datos.
Sin embargo, de mis registros a continuación se desprende claramente que los cambios están siendo registrados por dbContexts change tracker, incluso con la configuración establecida en false.
¿Me estoy perdiendo de algo?
Entity Framework Version: 5.0.0.0
Clase DbContext
public class ProjectContext : DbContext {
public DbSet<Project> Projects {get;set;}
}
Clase de controlador
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();
}
Método de registro
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();
foreach (var x in entries)
{
var name = x.Entity.ToString();
var state = x.State;
sw.WriteLine("");
sw.WriteLine("***Entity Name: " + name +
"is in a state of " + state);
var currentValues = x.CurrentValues;
sw.WriteLine("***CurrentValues***");
PrintPropertyValues(currentValues,sw);
if (state != EntityState.Added)
{
sw.WriteLine("***Original Values***");
PrintPropertyValues(x.OriginalValues,sw);
}
}
}
}
Primer registro
***Entity Name: Models.Projectis in a state of Added
***CurrentValues***
ProjectId:0
ProjectName:uniqueName
Segundo registro
***Entity Name: Models.Projectis in a state of Modified
***CurrentValues***
ProjectId:1
ProjectName:uniqueName
***Original Values***
ProjectId:1
ProjectName:a differentName!