我有下面的代码(这实际上是一个更复杂的查询的一部分,但我已将问题隔离到这一特定行以帮助调试)根据我读过的所有内容应该在 SQL 中创建一个 IN 子句,假设我正在使用EF4。据我所知,我正在使用 EF4(我们的项目使用 .NET Framework 4,当我查看 System.Data 和 System.Data.Entity 时,他们都说所有项目的版本都是 4.0.0.0)
int[] assessmentIDs; // this is just here to show what this is,
// but it is a params parameter passed to this methed
var assessments = from cert in container.ProctorAssessmentCertifications
where assessmentIDs.Contains(cert.AssessmentID)
select cert.ID;
但是,当我运行它时,我得到运行时错误:
LINQ to Entities does not recognize the method 'Boolean Contains[Int32](Int32[], Int32)' method, and this method cannot be translated into a store expression.
当我使用 LinqPad 时,它会正确输出一个 IN 子句,就像在 EF4 中所期望的那样。我的问题是:
A. 我做错了什么,我该如何做?
B. 如果实际上不是,我如何强制调用 EF4?我在任何指向旧版本的 web.config 文件中都找不到参考。