Comment puis-je voir l'Entity Framework dans l'attente de changements?
Je suis en création d'une application avec le ADO.NET Entity Framework.
Je peux étape par le biais de mon code, ligne par ligne, en cours de débogage et de regarder SQL Server Profiler pour chaque requête exécutée, mais je ne peux pas trouver où tous ces commandes SQL sont venant de!
Parfois, lorsque j'execute SaveChanges()
, Entity Framework effectue inattendu, bizarre INSERTS. Ils ont parfois rompre l'application. Je ne peux pas comprendre ce que je fais pour la cause.
Comment puis-je surveiller les modifications en attente que la file d'attente pour un SaveChanges()
appel?
Vous devez vous connecter pour publier un commentaire.
Depuis Entity Framework 5.0
DbContext
a unChangeTracker
de la propriété qui a toutes les modifications en attente. Semblable à laObjectStateManager
vous pouvez obtenir des entités dans divers états comme suit:Prendre un coup d'oeil à
ici.
De suivre les événements lorsque les entités sont ajoutés ou supprimés à partir du gestionnaire d'état, vous pouvez utiliser ObjectStateManagerChanged événement:
Entity Framework 6 a une méthode pour que, vraiment utile.
Exemple:
Quand j'ai essayé d'afficher la
ObjectStateManager
mentionné dans les autres réponses, il n'apparaît pas dans mon débogueur. Lors du débogage dans Visual Studio 2017, je l'ai trouvé utile d'ajouter l'extrait suivant d'une montre (ce qui jette le dbContext objet avant de référencer les Vousmanager propriété).((System.Data.Entity.Infrastructure.IObjectContextAdapter)this.db).ObjectContext.ObjectStateManager
Une fois que la montre est faite, vous pouvez déboguer, ligne par ligne, en regardant ce que les actions ajouter pour les différentes propriétés de la liste des modifications en attente.