【发布时间】:2013-05-24 22:39:43
【问题描述】:
我正在使用实体框架 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 看起来很简单,但我无法弄清楚我缺少什么。
这可能是重复的,但与此类似的所有问题都不同,没有一个解决了这个问题。
任何帮助将不胜感激。
【问题讨论】:
-
我很好奇你为什么不使用连接语法来连接:
from person in Context.Person join job in Context.Job on person.jobId equals job.PK where job.Description == "CEO" select new { person.PK }? -
更好的办法是定义外键并使用导航属性,这样连接将由 EF 自动为您处理。
标签: linq linq-to-entities entity-framework-5