私は以下のコードを持っています(これは実際にははるかに複雑なクエリの一部ですが、デバッグを支援するためにこの特定の行に問題を分離しました)これは、私が使用していると仮定して、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 を使用すると、EF4 で期待されるような IN 句が正しく出力されます。私の質問は次のとおりです。
A. 間違っている点と、これを機能させるにはどうすればよいですか?
B. 実際には EF4 が呼び出されていない場合、EF4 を強制的に呼び出すにはどうすればよいですか? 古いバージョンを指す web.config ファイルには参照が見つかりません。