0
編輯:忘了說我正在使用流利的NHibernate,即使標籤可以暗示它。IQueryable在內層有多個連接的Linq查詢
我這些實體類:
class OuterLevel
{
ICollection<MidLevel> mid_items;
... other properties
}
class MidLevel
{
OuterLevel parent;
Inner1 inner1;
Inner2 inner2;
... other properties
}
class Inner1
{
int id;
string description;
}
class Inner2
{
int id;
string description;
}
我需要建立一個LINQ查詢,返回OuterLevel的列表,適當填充所有子對象。 假設所有映射是正確的,工作時,我發現這裏的難點在於結果查詢應該是這樣的
SELECT * FROM OuterLevelTable OLT INNER JOIN MidLevelTable MLT ON (MLT.parentID = OLT.ID) INNER JOIN
Inner1Table ON (MLT.Inner1ID = Inner1Table.ID) INNER JOIN
Inner2Table ON (MLT.Inner2ID = Inner2Table.ID)
WHERE (Inner1Table.someproperty1 = somevalue1) AND (Inner2Table.someproperty2 = somevalue2)
的主要問題是兩個聯接從中層開始向下對象層次,所以我不能找出哪些抓取並支持fetchmany組合可以在不具有生成的查詢加入兩倍MidLevelTable,可以使用諸如以下的作用:
return All().FetchMany(x => x.mid_items).ThenFetch(x => x.inner1).FetchMany(x => x.mid_items).ThenFetch(x => x.inner2);
我想返回可被進一步過濾一個IQueryable的,所以我寧願避免查詢和QueryOver。因爲當你在連接表的結果記錄是不夠反正填充集合過濾
由於提前, 馬里奧
你想'IQueryable',但寧願避免'查詢'?這不就是'Query'的用途嗎? – 2012-08-10 08:54:22