2010-11-09 51 views
1

我需要编写一个NHibernate查询,它将放置一个限制来访问一对多关系中的子项。如何编写查询儿童的NHibenerate查询?

例如,我有一个客户对象,其属性是地址列表。我需要找到在某个城市有地址的所有客户。

此外,我正在写这个查询,这样我也会将其他限制添加到客户本身,例如状态,名称等。所以,我无法纯粹从地址角度编写查询。

有关如何完成此任何想法?

回答

1

您可以使用标准的API,与你的客户对象不会忽略物业的“嵌套”的标准:

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

如果您需要在名称查询,你可以去这样的:

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

美丽!谢谢! – 2010-11-09 21:57:59