我使用实体框架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。我想我需要做更多的阅读和练习。 –