NHibernate:Or-子句与组件

时间:2009-10-11 22:17:58

标签: c# nhibernate

我有两个班级:

public class Person{

  public virtual string Name { get; set;}
  public virtual Address Address { get; set; }
}

public class Address{
  public virtual string Street { get; set; }
}

现在我希望NHibernate给我所有姓名等于“Xyz”或Address.Street等于“Xyz”的人。

这种方法是和 - 结合:

ICriteria criteria = session.CreateCriteria(typeof(Person));
criteria.Add(Expression.Eq("Name", "Xyz"))
.CreateCriteria("Address").Add(Expression.Eq("Street", "Xyz"));

我想要的是和or-clause。

非常感谢! 安迪

1 个答案:

答案 0 :(得分:0)

我一直只是使用HQL查询 - 更容易编写读取(至少如果你已经习惯了SQL。它是这样的:

IQuery query = session.CreateQuery("FROM Person p WHERE p.Name = :Name OR p.Address.Street = :Street");
query.SetParameter("Name", "Xyz");
query.SetParameter("Street", "Xyz");