Come posso vedere le modifiche in sospeso di Entity Framework?

.net c# entity-framework

Domanda

Sto creando un'applicazione con ADO.NET Entity Framework.

Posso scorrere il codice riga per riga mentre eseguo il debug e guardo SQL Server Profiler per ogni query eseguita, ma non riesco a capire da dove provengano tutti quei comandi SQL!

A volte quando SaveChanges() , Entity Framework esegue INSERTS strani e inaspettati. A volte interrompono l'applicazione. Non riesco a capire cosa sto facendo per causarli.

Come posso monitorare le modifiche in sospeso che si accodano in attesa di una chiamata a SaveChanges() ?

Risposta popolare

Poiché Entity Framework 5.0 DbContext ha una proprietà ChangeTracker con tutte le modifiche in sospeso. Simile a ObjectStateManager è possibile ottenere entità in vari stati come segue:

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);


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow