1

背景: 考える3つのテーブルは、どのように私は3つのテーブルを結合することができ

results contains 2 columns vId and pId 
vTable contains 2 columns vId and data 
pTable contains 2 columns pId and data 

私は私が試したQueryOver

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 

を使用して、SQLクエリのこの種を達成したいです次のとおりです。

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 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) 

を追加するときVTABLE

からデータを取得するだけで正常に動作しかし、私は

Delegate 'System.Func<System.Collections.Generic.IEnumerable<pTable>>' does not take 1 arguments 

は私が間違って何をやっているエラーが出ますか?

答えて

2
.JoinQueryOver<pTable>(p => p.pId) 

あなたはHBMにそれをマップすることができない場合は、マップされたエンティティまたはコレクションではない、それのidを指すように持っています。また、JoinQueryOverはvTablesではなくpTablesを返しますが、戻り値の型をvTablesのリストにすることを拒否した場合は、代わりにJoinAliasを使用することができます。ただし、必要なのはその代理であれば、QueryOverとJoinQueryOver呼び出し

関連する問題