问题查询到的对象的层次结构与NHibernate

问题描述:

问题:问题查询到的对象的层次结构与NHibernate

我有对象层次A => B => C - 这是A引用BB引用CC包含我试图查询的Name属性。我想打电话给下面的代码获取我收到错误的A's

ICriteria criteria = session.CreateCriteria(typeof (A)).Add(Restrictions.Eq("B.C.Name", "Test")); 
return criteria.List<A>(); 

列表中的“无法解析属性:B.C.Name的:A”。我的所有映射都很好看,其中B包含C属性,C包含Name属性。我也验证映射是正确的,因为我正在运行成功检索请求的数据的其他查询。

基本上,我试图让所有A's匹配C中的名称。那么如何编写一个可以做到这一点的查询呢?

感谢,

凯尔

使用QueryOver:

session.QueryOver<A>() 
    .JoinQueryOver(a => a.B) 
    .JoinQueryOver(b => b.C) 
    .Where(c => c.Name == "Test") 
    .List<A>(); 

你也可以用别名做。

+0

非常感谢 - 做到了。我还在http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx上的QueryOver API中找到了一篇很好的文章。有时你只需要知道什么东西被称为开始在正确的方向。 – 2011-03-31 23:15:37

+0

是啊,这几乎是QueryOver的最佳信息:) – psousa 2011-03-31 23:22:09