如何编写查询孩子的NHibenerate查询?

时间:2010-11-09 20:56:48

标签: c# .net nhibernate fluent-nhibernate

我需要编写一个NHibernate查询,该查询将设置一个限制,以一对多的关系访问子节点。

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

此外,我正在以这样的方式编写此查询,即我还将向客户本身添加其他限制,例如状态,名称等。因此,我不能完全从地址角度编写查询。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以在Customer对象的Adresses属性中使用Criteria 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>();