11
我在层次结构A > B > C > D
中有以下对象。每个对象都映射到一个表。我试图用QueryOver写的SQL语句:Complex nHibernate QueryOver表达式
SELECT B
FROM A, B, C, D
WHERE A.ID = B.ID
AND B.ID = C.ID
AND C.ID = D.ID
WHERE A.NUMBER = 'VALUE'
AND D.NAME IN ('VALUE1', 'VALUE2')
我有C#代码至今:
string[] entityNames = entityAttributes.Select(e => e.Name).ToArray();
string customerNumber = 2;
return session.QueryOver<B>()
.JoinQueryOver(b => b.C)
.JoinQueryOver(c => c.D)
.WhereRestrictionOn(d => d.Name).IsIn(entityNames)
.List<B>();
现在缺少的这里是A > B
链接。我无法弄清楚如何在NUMBER
字段中将连接限制在A
上。我尝试了以下方法,但.JoinQueryOver(b => b.C)
正在寻找类型A
,而不是寻找类型B
。
return session.QueryOver<B>()
.JoinQueryOver(b => b.A)
.Where(a => a.Number == customerNumber)
.JoinQueryOver(b => b.C) **//Looks for type A instead of B**
.JoinQueryOver(c => c.D)
.WhereRestrictionOn(d => d.Name).IsIn(entityNames)
.List<B>();
我如何添加类型A
到该查询,同时还返回类型B
?
谢谢!这在我的应用程序的多个场景中像一个魅力一样工作! – 2011-04-13 13:24:37