Étant relativement nouveau à NHibernate j'ai hérité de quelques codages de base que je dois modifier. J'ai un tas d'objets de type Groupe. Chaque groupe peut avoir un ou plusieurs enfants de type Groupe et de nouveau les enfants peuvent avoir des enfants de type Groupe et ainsi de suite. Chaque objet Groupe possède une propriété/champ appelé Supprimé avec la valeur "groupe supprimé" (une sorte de suppression douce). Dans le cas où un groupe a le champ Supprimé défini sur "groupe supprimé", il ne doit pas être sélectionné, de même que les enfants et les petits-enfants. En d'autres termes, je dois obtenir une liste de tous les groupes n'ayant pas le champ supprimé défini sur "groupe supprimé". J'ai ce morceau de code hérité mais il n'inclut pas de critère pour le champ supprimé qui est nouveau, c'est-à-dire que le code récupère tous les groupes. Comment puis-je développer le code pour répondre à ma demande. J'ai essayé avec .Where et .Criteria mais je reçois soit des erreurs de compilation que la restriction ne fonctionne pas.NHibernate fetch y compris les enfants et un critère
Code Enherited (sélectionne tous les groupes):
var allGroups = ObjectFactory.GetInstance<IUnitOfWork>().Session
.QueryOver<Group>()
.Fetch(g => g.ChildGroups).Eager
.Fetch(g => g.Vacancies).Eager
.TransformUsing(new DistinctRootEntityResultTransformer())
.List();
Ne fonctionne pas. On dirait que la clause where filtre tous les groupes de sorte que le résultat est zéro groupes comme j'ai expérimenté en utilisant la requête orignal avec une clause where. L'omission de la clause where renvoie tous les groupes en tant que requête d'origine. – Torben
Ah. Alors avez-vous besoin de quelque chose comme une sous-requête corrélée qui trouve d'abord des groupes éligibles avec le groupe supprimé de '' Deleted! = "" Et qui ne renvoie que les groupes qui sont dans cette liste? –
J'ai modifié ma réponse avec ce concept, mais je ne suis pas sûr que ce soit exactement ce que vous cherchez. –