2009-02-10 6 views
2

J'ai trouvé comment utiliser les ObjectStateManager et ObjectStateEntries pour déterminer les valeurs d'origine des propriétés scalaires pour une entité donnée.Récupération des valeurs d'origine des références modifiées

Ce que je dois savoir maintenant, c'est comment faire la même chose pour les propriétés de navigation. La méthode GetModifiedProperties sur ObjectStateEntry ne renvoie pas les propriétés de navigation.

+0

je devais aller l'approche de cache interne en dehors du contexte. J'ai un problème. Il commence la mise en cache immédiatement après la création de l'objet. Ainsi, lorsqu'une requête commence à construire le graphe d'objets, elle a déjà démarré la mise en cache. Existe-t-il un moyen de savoir quand un graphe d'objet a été complété? – kareem

Répondre

0

Procurez-vous tous ajoutés ou supprimés ObjectStateEntries puis utiliser LINQ pour obtenir ceux qui représentent les relations:

private IEnumerable<ObjectStateEntry> GetModifiedRelationshipEntries() 
{ 
    return ObjectStateManager.GetObjectStateEntries(
      EntityState.Added | EntityState.Deleted) 
      .Where(e => e.IsRelationship); 
} 

je trouve ces deux entrées du blog de Daniel Simmons très utile lors de l'écriture du journal d'audit pour EF:

http://blogs.msdn.com/b/dsimmons/archive/2008/01/16/ef-extension-method-extravaganza-part-i-objectstateentry.aspx

http://blogs.msdn.com/b/dsimmons/archive/2008/01/17/ef-extension-methods-extravaganza-part-ii-relationship-entry-irelatedend.aspx

Questions connexes