2010-11-09 6 views
1

J'ai besoin d'écrire une requête NHibernate qui va placer une restriction qui accède aux enfants dans une relation un à plusieurs.Comment écrire une requête NHibenerate qui interroge des enfants?

Par exemple, j'ai un objet client qui a une propriété qui est une liste d'adresses. J'ai besoin de trouver tous les clients qui ont une adresse dans une ville donnée.

En outre, j'écris cette requête de telle manière que j'ajouterai également d'autres restrictions au client lui-même, telles que le statut, le nom, etc. Ainsi, je ne peux écrire la question purement du point de vue d'adresse .

Toutes les idées sur la façon d'y arriver?

Répondre

1

Vous pouvez utiliser l'API de critères, un critère « imbriqués » sur la propriété Adresses de votre objet client:

var result = session 
    .CreateCriteria(typeof(Customer)) 
     .CreateCriteria("Adresses") 
     .Add(Restriction.Eq("City", "NY")) 
    .ToList<Customer>(); 

Si vous devez interroger sur le nom, vous pouvez aller comme ceci:

var customerCriteria = session 
    .CreateCriteria(typeof(Customer)); 

customerCriteria.Add(Restrictions.Like("Name", "John", MatchMode.Exact)); 

customerCriteria.CreateCriteria("Adresses") 
    .Add(Restriction.Eq("City", "NY")); 

var result = customerCriteria.ToList<Customer>(); 
+0

Magnifique! Merci! –

Questions connexes