質問: db.GetFoo(param1, param2); // etc. ``` しかし、後で、データベースに再度照会すると(この場合、LINQを使用して)、エラーがスローされます。 > EntityFramework.SqlServer.dllで 'System.Data.Entity.Core.EntityCommandCompilationException'型の例外が発生しましたが、ユーザーコードでは処理されませんでした。コマンド定義の準備中にエラーが発生しました。 > >
回答: この問題は次のように解決されました。 `Foo`はエンティティとして定義され、複合型ではありません。 `Foo`用の対応するデータベーステーブルがなく、作成する方法がないという事実に問題があった可能性があります。代わりに、 `Foo`新しい複合型を追加しました。 次に、後続のLINQクエリに2番目の`using()`ブロックを作成しました。 最後に、ストアドプロシージャ`GetFoo()`を修正して、単一の予測可能な結果セットを返すことができました(最初のSPは、 `if`ステートメントの結果を条件として、2つのカテゴリ別に異なる結果セットの1つを返しました)。追加の予防措置として、各結果レコードに固有のGUIDをキーとして使用するようにしました(対応する複合タイプのキーを定義できませんでしたが)が、SPが返すすべての列に別名を付けました。 これらの措置のどれが私の問題を解決したのか正確にはわかりませんが、同様の問題を抱えている人に役立つことを願っています。