我想知道如何有效計數(SQL服務器端)具有多個相關實體的特定範圍的結果的不同計數的數量到很多關係。高效計算EF中多對多關係實體的方法
這是目前的情況中實體框架:
表1 1 < ------->∞表2
表2∞< ------->∞表4
表2和表4具有多對多關係,並與SQL中的Table3鏈接。 我想要的是與Table1的特定範圍相關的table4結果的不同計數。
在LINQ to SQL查詢是這樣的:
(from dc in Table1
join vc in Table2 on dc.Table1Id equals vc.Table2Id
join vcac in Table3 on vc.Table2Id equals vcac.Table3Id
join ac in Table4 on vcac.Table3Id equals ac.Table4Id
where dc.Table1Id > 200000
group ac by ac.Table4Id into nieuw
select new { acid= nieuw.Key}).Count()
這讓SQL服務器直接返回計數。 由於多對多關係(表3)的額外表已消失,因此在查詢語法中將此查詢轉換爲L2E時出現問題。 (因爲我不能通過內部連接將表4連接到表2)。
我有這種鏈式語法,但是,這是有效的(這是否獲取整個列表,或它是否讓SQLserver做計數,因爲我不知道這是一種有效的方式來選擇,表2包含約收3萬詞條,我不希望它取這個結果只是來算的話):
context.Table4.Where(a => a.Table2.Any(v => v.Table1Id > 200000)).Select(a => aTable4Id).Distinct().Count();
我將如何去轉換LINQ2SQL查詢到L2E在查詢語法?或者在這種情況下鏈接的語法很好?
導航屬性在哪裏? ('Table1.Table2s'等) – 2014-10-17 11:38:57
在EF: Table1.Table2 Table2.Table4 Table2.Table1 Table4.Table2 Table4.Table4 – snovvdog 2014-10-17 12:02:01
在'join'代替所以使用這些。 – 2014-10-17 12:53:19