SQL で 2 つのテーブルがあるとします。
私の EDMX には、テーブル A のエンティティ タイプに対応する列を返す SPROC の関数インポートがあります。
SPROC で、テーブル B から対応するデータを選択した場合、エンティティ フレームワーク (4.1) は、ABName を要求したときに、後でデータベースへの遅延フェッチを行わずにそのデータを関連付けることを認識しますか?
SQL で 2 つのテーブルがあるとします。
私の EDMX には、テーブル A のエンティティ タイプに対応する列を返す SPROC の関数インポートがあります。
SPROC で、テーブル B から対応するデータを選択した場合、エンティティ フレームワーク (4.1) は、ABName を要求したときに、後でデータベースへの遅延フェッチを行わずにそのデータを関連付けることを認識しますか?
.NET 4.0 の関数インポートでは、単一のテーブルからのみデータを選択できます。プリンシパル エンティティと依存エンティティの両方を読み込むには、2 つの個別のストアド プロシージャが必要です。EF 4.0 の複数の結果セットは、一部の拡張機能によってのみサポートされていました。
.NET 4.5 は、複数の結果セットを持つストアド プロシージャもサポートしていますが、少なくとも VS 2012 RTM では、この機能はデザイナーでサポートされていませんでした (EDMX の XML で手動で行う必要がありました)。VS 2012 November Updateで修正されているのか、まだ試していません。
プリンシパル テーブルと従属テーブルの両方の結果セットを返すストアド プロシージャがあれば、EF はリレーションが正しく設定されていることを確認し、いつでも遅延読み込みをオフにして、データベースへの追加のクエリがないことを確認できます。