1

我正在使用实体框架 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 看起来很简单,但我无法弄清楚我错过了什么。

这可能是重复的,但是与此类似的所有问题都是不同的,并且没有一个解决了这个问题。

任何帮助,将不胜感激。

4

1 回答 1

1

那个 SQL 正在执行一个连接,你为什么不在你的 Linq 中执行一个呢?

另外,如果您只需要一个字段,我不确定您为什么要投影到匿名类型,只需选择该字段(将映射到您的字段类型所在的List<T>位置)。TPK

尝试这个:

from person in Context.Person
join job in Context.Job on person.jobID equals job.PK
where job.Description == "CEO"
select person.PK;
于 2013-05-29T15:34:18.270 回答