2 つの DB に 2 つの同じ手順があります。
- 同じ名前
- 同じパラメータ名とタイプ
- 同じ列のタイプと名前を返す選択で終了します( a を入力
SELECT ... INTO table
すると、まったく同じテーブルが生成されます)。
唯一の違いは、最終的な選択のための SQL クエリを構築するコードです。データベース 1 で EF を使用すると意図したとおりに動作しますが、データベース 2 でコードを実行するとエラーで終了します。
データ リーダーは、指定された 'Ctx.Procedure_Result' と互換性がありません。タイプ 'FooId' のメンバーには、データ リーダーに同じ名前の対応する列がありません。
私は使用しています:
- エンティティ フレームワーク 4.2
- ビジュアル スタジオ 2010
- Sql サーバー 2008 R2
なぜこれが起こっているのかを理解するのに十分なEF内部の知識がありません。私の考えでは、同じものを盗聴しないメカニズムを盗聴するいくつかの列タイプ/名前が必要であるということです。
編集1:
このプロシージャはテーブル型を「返す」のではなく、いくつかの行を「選択」するだけです。この選択結果は、EDMX の ComplexType にマップされます。
詳しくはお気軽にお尋ねください。