我正在使用实体框架5。
下面是我成功运行的SQL查询:
Select person.pk
from person, job
Where
person.jobId= job.pk
and
job.Description = 'CEO'
我已经更改了上面查询中的表和列名。
现在,当我将上面的查询转换为下面的LINQ:
from person in Context.Person
from job in Context.Job
where
person.jobId== job.PK &&
job.Description == "CEO"
select new {
person.PK
};
但是上面的LINQ给了我一个异常:
无法创建'Models.Job'类型的常量值。只支持基本类型(如Int32、String和Guid)
LINQ看起来很简单,但我不能弄清楚我错过了什么。
这可能是重复的,但所有类似的问题都是不同的,没有一个解决这个问题。
SQL正在执行连接,为什么你不在你的Linq中执行一个?
另外,我不确定为什么你要投射到一个匿名类型,如果你只想要一个字段,只需选择该字段(将映射到List<T>
,其中T
是您的PK
字段的类型)。
试试这个:
from person in Context.Person
join job in Context.Job on person.jobID equals job.PK
where job.Description == "CEO"
select person.PK;