我使用LINQ與ODATA Web服務System.NotSupportedException:只能項目查詢中的最後一個實體類型被翻譯
from tp in TyrePatterns
from t in tp.Tyres
where t.Diameter == 195
select tp
看起來很簡單,對不對?輪胎是TyrePatterns的動力。所以,只是要確定你能看到什麼,我想做的事情,我在做什麼在SQL的神奇世界看起來是這樣的:
SELECT DISTINCT TyrePatterns.Name
FROM TyrePatterns
INNER JOIN Tyres ON Tyres.TyreID = TyrePatterns.TyreID
WHERE Tyres.Diameter = 195
在我們的網站,並在LINQPad中,LINQ代碼給運行時錯誤:
System.NotSupportedException: Can only project the last entity type in the query being translated.
深入瞭解該錯誤實際上意味着和解決方案將是真棒。
我有這個想法,但不幸的是,它不是我所需要的。我想要一個TyrePatterns表(TyrePattern.Name)的列。 TyrePatterns和Tyres之間存在一對多的關係(每TyrePattern有許多輪胎)。通過選擇Tyres而不是TyrePatterns,我得到了重複的結果,因爲我無法做出Distinct,因爲使用Distinct會給出不同的運行時錯誤。 – Zac 2010-09-16 13:40:32
你可以在客戶端做不同的事情(它會下載更多)。要在客戶端上運行它,只需在服務器上運行任何東西之後添加.AsEnumerable()。 AsEnumerable()之後的所有內容都將在客戶端本地執行(絕對支持Distinct)。 – 2010-09-16 16:28:56
感謝您的回答,我希望我可以將其標記爲有用!作爲一種解決辦法,然而這似乎仍然不盡人意;這可能意味着需要大量的冗餘數據(幾個數量級以上)。我也嘗試去做一個小組,作爲擺脫重複的手段,但是這也給了一個不支持的例外。 – Zac 2010-09-27 10:04:15