2012-04-11 83 views
1
我難以理解這個問題

LINQ到實體(指定類型的成員'在LINQ不支持對公單位)

這裏是T-SQL查詢我需要使用LINQ到實體實現

select r.ReviewID, b.BusinessID, b.Name as BusinessName ,r.Description 
from gb_business.Review r 
inner join gb_business.Business b on r.BusinessID = b.BusinessID 
inner join gb_listing.RegionalService rs on b.BusinessID = rs.BusinessID 
where r.ReviewStatusID=1 and rs.TypeID=1 and rs.IsMain=1 

在VS2010它看起來像這樣(不其中子句

var res1 = (from r in context.Review 
      join b in context.Business on r.BusinessID equals b.BusinessID 
      join rs in context.RegionalService on b.BusinessID equals rs.Business.BusinessID 
      select r).ToList(); 

該表達式編譯很好,但在運行時間有個例外:LINQ to Entities不支持指定的類型成員'BusinessID'。僅支持初始化程序,實體成員和實體導航屬性。

我想知道爲什麼BusinessID是一個問題。謝謝。

+2

什麼數據類型是'BusinessID'?此外,您的第二次加入鏈接通過關聯。 ('rs.Business.BusinessID',而不是'rs.BusinessID',因爲我會預期的。) – GalacticCowboy 2012-04-11 17:52:22

+0

它是int所有3個表,是Business和RegionalService通過BusinessID連接成一對多。爲什麼它不喜歡BusinessID。有沒有辦法深入linq樹以及查詢如何轉化爲sql語法?謝謝。 – itisinteresting 2012-04-11 18:15:05

+0

那麼,你是否修復了「rs.Business.BusinessID」?它應該是'rs.BusinessID'。您不能在另一個實體的實體成員('Business.BusinessID')上加入'RegionalService'實體。 – surfen 2012-04-11 19:35:41

回答

0

可能BusinessID未標記爲實體成員。

+0

那麼您如何將它標記爲實體成員呢? – 2015-04-17 08:35:40

4

的回答你的問題給出有:Question : Can I create a linq to entity query on non entity member fields

使用時放入系統LINQ到實體的查詢,你只能使用「實體成員是被你的數據表中定義的屬性。

由於您的查詢被包裝(「翻譯」)爲SQL命令,您必須使用您的數據模型中定義的屬性。

在您的示例中,我強烈建議您確保「BusinessID」與現有數據列匹配。

相關問題