J'ai besoin d'écrire un peu de logique métier avant de vider toutes les entités modifiées. L'une des solutions que j'ai essayées est IPreUpdateEventListener. Mais cet écouteur d'événement possède déjà un objet dénormalisé en valeur-clé. J'ai besoin de quelque chose avant la dénormalisation et même avant le flush. Donc, la question est de savoir comment obtenir la liste des entités modifiées (diry).Comment obtenir la liste des entités modifiées (sales) de la session Nhibernate?
2
A
Répondre
1
Vous pouvez regarder l'événement Flush. Mais qu'est-ce que vous essayez d'accomplir, exactement?
1
Eh bien, la meilleure solution que j'ai trouvée utilise PersistenceContext.
foreach (var entity in eventSource.PersistenceContext.EntityEntries.Keys)
{
// entity is entity to update...
}
Vous ne savez pas si c'est la bonne solution, cependant.
3
Mon code pour détecter des entités sales
var dirtyObjects = new List<object>();
var sessionImpl = hsession.GetSessionImplementation();
foreach (NHibernate.Engine.EntityEntry entityEntry in sessionImpl.PersistenceContext.EntityEntries.Values)
{
var loadedState = entityEntry.LoadedState;
var o = sessionImpl.PersistenceContext.GetEntity(entityEntry.EntityKey);
var currentState = entityEntry.Persister.GetPropertyValues(o, sessionImpl.EntityMode);
if (entityEntry.Persister.FindDirty(currentState, loadedState, o, sessionImpl) != null)
{
dirtyObjects.Add(entityEntry);
}
}
Questions connexes
- 1. Android: Comment obtenir les propriétés sales (modifiées)
- 2. RIA Services obtenir la liste des entités
- 3. Obtenir la liste des méthodes java nouvelles/modifiées
- 4. Comment auditer les collections modifiées dans NHibernate?
- 5. NHibernate HQL rejoindre la requête pour la liste des entités retournant des doublons
- 6. Nhibernate - Obtenir une liste
- 7. Nhibernate-Linq: Comment utiliser la liste Iqueryable après la fermeture de la session?
- 8. Obtenir la liste des requêtes nommées dans NHibernate
- 9. Comment enregistrer une ou plusieurs entités dans une session NHibernate sans enregistrer d'autres entités incorrectes?
- 10. cascade NHibernate - problème avec des entités indépendantes
- 11. Nhibernate obtenir la collection par ICriteria
- 12. "La session est fermée!" - NHibernate
- 13. Comment insérer dans NHibernate DB après la session NHibernate
- 14. Gestion de session NHibernate?
- 15. Objet ASP.NET + Nhibernate renvoyé à la session
- 16. Lignes modifiées à partir de la liste d'objets?
- 17. NHibernate extrait DBTransaction de la session
- 18. Nhibernate - Paging et entités de chargement impatientes
- 19. Comment obtenir la liste des périodes mensuelles?
- 20. Comment obtenir la liste des messages traduisibles
- 21. Comment obtenir la liste des widgets installés?
- 22. NHibernate - Comment faire pour itérer des entités persistantes attachées à une session?
- 23. entités NHibernate avec des tables db complexes
- 24. Récupère la liste des champs modifiés dans l'entité de NHibernate Session
- 25. stratégie pour passer des entités nhibernate entre les pages
- 26. Qu'est-ce que la session NHibernate exactement?
- 27. Comment savoir si des entités dans le contexte sont sales avec .Net Entity Framework 4.0
- 28. Comment récupérer des entités uniques via l'API NHibernate Criteria?
- 29. NHibernate & Annulation des changements aux entités
- 30. Enregistrement de plusieurs entités enfants dans NHibernate, à la fois
Merci, événement de chasse semble pourrait fonctionner. Il a IEventSource comme argument, et eventSource.PersistenceContext.EntityEntries.Keys est toutes les entités modifiées. Tout ce matériel nécessaire pour mettre à jour les "vues" des entités. Les vues sont simplement des données dénormalisées des événements principaux, elles ont aussi des références, c'est pourquoi je ne peux pas utiliser IPreUpdateEventListener. –
'PersistenceContext.EntityEntries' n'est pas une entité modifiée. Ce sont les entités qui ont été chargées par la session en cours (eventSource). Peu importe s'ils ont été modifiés ou non, ils seront toujours dans EntityEntries. – Chaulky