S'il vous plaît pardonnez-moi si je ne l'explique pas très bien. Tout d'abord, j'utilise NHibernate 2.0 avec .NET 3.5. Fondamentalement, j'ai une entité "EntityA" (pour la simplicité) avec un ou plusieurs enfants de type EntityB. Chaque entitéB a un numéro indiquant comment elle a été créée récemment. Je voudrais supprimer tout sauf le x EntityB le plus récent. Cela fait partie d'une opération de purge.Comment supprimer efficacement tous les x enfants de l'entité parent sauf les derniers en utilisant NHibernate?
J'ai du mal à voir une manière efficace de faire ceci, Le problème est que les instances d'EntityB sont réellement assez complexes et pourraient avoir des centaines d'objets enfants eux-mêmes. La liste d'EntityB sur EntityA est paresseusement chargée et j'aimerais idéalement éviter de la charger en mémoire si possible.
J'ai essayé de transmettre une requête HQL à Session.Delete. Malheureusement, HQL ne semble pas supporter l'instruction top, donc je ne peux pas faire de sous-sélection pour choisir celles qui ne doivent pas être supprimées.
Les cascades sont définies dans NHibernate et non dans la base de données. Je ne suis pas sûr mais je me demande si NHibernate chargera le graphe d'objet entier même si la suppression est faite via HQL.
Tout conseil serait apprécié.
[Modifier] Malheureusement, toute requête doit être HQL pas SQL car il doit être la base de données indépendante [/ Modifier]
Cheers,
James