related - select entity framework c#
¿Cómo puedo ver los cambios pendientes de Entity Framework? (4)
Dado que Entity Framework 5.0 DbContext
tiene una propiedad ChangeTracker
que tiene todos los cambios pendientes. De forma similar al ObjectStateManager
, puede obtener entidades en varios estados de la siguiente manera:
myDbContext.ChangeTracker.Entries().Where(e => e.State == EntityState.Added);
myDbContext.ChangeTracker.Entries().Where(e => e.State == EntityState.Deleted);
myDbContext.ChangeTracker.Entries().Where(e => e.State == EntityState.Modified);
Estoy creando una aplicación con ADO.NET Entity Framework.
Puedo pasar por mi código línea por línea mientras estoy depurando y ver SQL Server Profiler para cada consulta ejecutada, ¡pero no puedo deducir de dónde vienen todos esos comandos SQL!
A veces, cuando ejecuto SaveChanges()
, Entity Framework realiza SaveChanges()
inesperadas y extrañas. A veces rompen la aplicación. No puedo entender lo que estoy haciendo para causarlos.
¿Cómo puedo controlar los cambios pendientes que hacen cola esperando una SaveChanges()
a SaveChanges()
?
Echa un vistazo a
myObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added)
here .
Para supervisar los eventos cuando las entidades se agregan o eliminan del administrador de estado, puede usar el evento ObjectStateManagerChanged :
var ctx = new ModelContainer();
// ...
ctx.ObjectStateManager.ObjectStateManagerChanged += (sender, e) =>
{
Trace.WriteLine(string.Format("{0}, {1}", e.Action, e.Element));
};
Entity Framework 6 tiene un método para eso, realmente útil.
dbContext.ChangeTracker.HasChanges()
Ejemplo:
if (dbContext.ChangeTracker.HasChanges())
{
db.SaveChanges();
}