问题查询到的对象的层次结构与NHibernate
问题描述:
我有对象层次A => B => C
- 这是A
引用B
和B
引用C
。 C
包含我试图查询的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>();
你也可以用别名做。
非常感谢 - 做到了。我还在http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx上的QueryOver API中找到了一篇很好的文章。有时你只需要知道什么东西被称为开始在正确的方向。 – 2011-03-31 23:15:37
是啊,这几乎是QueryOver的最佳信息:) – psousa 2011-03-31 23:22:09