我使用實體框架5.LINQ到EF交叉聯接問題
下面是一個成功運行我的SQL查詢:
Select person.pk
from person, job
Where
person.jobId= job.pk
and
job.Description = 'CEO'
我已經在上面的查詢更改表和列名。
現在whenI我上面的查詢轉換爲下面的LINQ:
from person in Context.Person
from job in Context.Job
where
person.jobId== job.PK &&
job.Description == "CEO"
select new {
person.PK
};
但上面的LINQ是給我一個例外:
無法創建類型「模式的恆定值。工作'。 在此上下文中僅支持基本類型(如Int32,String和Guid) 。
該LINQ看起來很簡單,但我無法弄清楚我缺少什麼。
這可能是重複的,但所有類似於這個問題的問題都不同,並且他們都沒有解決這個問題。
任何幫助,將不勝感激。
我很好奇,你爲什麼不使用聯接語法的捧場:'從人Context.Person在Context.Job上person.jobId參加工作等於job.PK哪裏job.Description ==「CEO」選擇新的{person.PK}'? – Vlad
更好的想法是定義外鍵並使用導航屬性,所以聯接將由EF自動爲您處理。 – Vlad
我讀了一些交叉連接的帖子,我相信這是他們在[1]中遵循的語法(http://stackoverflow.com/questions/10670678/how-do-you-code-a-cross-join-在LINQ),[2](http://stackoverflow.com/questions/4715744/sql-to-linq-conversion-with-cross-join)和[3](http://stackoverflow.com/questions/ 56547 /怎麼辦 - 你 - 執行 - 一個交叉聯接與 - LINQ到SQL)。對於這個問題,我不太擅長SQL或LINQ。我想我需要做更多的閱讀和練習。 –