使用nHibernate和QueryOver如何连接3个表

使用nHibernate和QueryOver如何连接3个表,nhibernate,fluent-nhibernate,queryover,Nhibernate,Fluent Nhibernate,Queryover,背景: 给出3张表格 results contains 2 columns vId and pId vTable contains 2 columns vId and data pTable contains 2 columns pId and data 我想使用QueryOver完成这种SQL查询 SELECT v.data, p.data from results r inner join vTable v on r.vId = v.vId inner join

背景: 给出3张表格

results contains 2 columns vId and pId  
vTable contains 2 columns vId and data  
pTable contains 2 columns pId and data  
我想使用QueryOver完成这种SQL查询

SELECT v.data, p.data  
from results r  
inner join vTable v on r.vId = v.vId   
inner join pTable p on r.pId = p.pId  
我尝试了以下方法:

var res = GetResults(some parameters)
            .Select(x => x.vId
            .Select(x => x.pID);

var dataset = session.QueryOver<vTable>()
                .WithSubquery.WhereProperty(v => v.vId).In(res)
                .Select(v => v.vId)
                .Select(v => v.data)
var res=GetResults(一些参数)
.选择(x=>x.vId
.选择(x=>x.pID);
var dataset=session.QueryOver()
.WithSubquery.WhereProperty(v=>v.vId).In(res)
.选择(v=>v.vId)
.选择(v=>v.data)
从vTable中获取数据时,它的工作方式很好

但是,当我添加第二个表时

var dataset = session.QueryOver<vTable>()
                .WithSubquery.WhereProperty(v => v.vId).In(res)
                .JoinQueryOver<pTable>(p => p.pId)
                .WithSubquery.WhereProperty(p => p.pId).In(res)
                .Select(v => v.vId)
                .Select(v => v.data)
                .Select(p => p.pId)
                .Select(p => p.data)
var dataset=session.QueryOver()
.WithSubquery.WhereProperty(v=>v.vId).In(res)
.JoinQueryOver(p=>p.pId)
.WithSubquery.WhereProperty(p=>p.pId).In(res)
.选择(v=>v.vId)
.选择(v=>v.data)
.选择(p=>p.pId)
.选择(p=>p.data)
我得到了错误

Delegate 'System.Func<System.Collections.Generic.IEnumerable<pTable>>' does not take 1 arguments
委托“System.Func”不接受1个参数
我做错了什么?

.JoinQueryOver(p=>p.pId)
.JoinQueryOver<pTable>(p => p.pId)
如果无法在hbm中映射,则必须指向映射的实体或集合,而不是id。而且JoinQueryOver将返回pTables而不是vTables,如果希望将返回类型保留为vTables列表,则可能需要使用JoinAlias,但如果只需要该投影,请确保在QueryOver和JoinQuery中添加别名通话结束