現在、asp.net mvc 4.5 および EF5 Beta 2 でコーディングしており、複数の結果セットを返すストアド プロシージャがあります。このサイトを見つけましたが、新しいバージョン (私が使用している) は既に複数の結果セットをサポートしていると書かれています。
今、私はそのサポートを見つけることができないようです。私は EF にまったく慣れていないので、間違ったことをしていないことを願っています。
作成された結果セットに対応するエンティティがデータベースにありません。
現在、asp.net mvc 4.5 および EF5 Beta 2 でコーディングしており、複数の結果セットを返すストアド プロシージャがあります。このサイトを見つけましたが、新しいバージョン (私が使用している) は既に複数の結果セットをサポートしていると書かれています。
今、私はそのサポートを見つけることができないようです。私は EF にまったく慣れていないので、間違ったことをしていないことを願っています。
作成された結果セットに対応するエンティティがデータベースにありません。
コア EF ライブラリは、複数の結果セット プロシージャをサポートしています。残念ながら、デザイナーはそうではありません - そしてリリース時にそうなるかどうかは明らかではありません.
特に複数のエンティティ型を返す場合 (複雑な型とは対照的に)、ドキュメントが少しまばらであることがわかりました。幸いなことに、EDMX を手動で編集することはそれほど複雑ではありません。私はトピックに関するブログ記事を書きました....
Entity Framework 5 – ストアド プロシージャからの複数のエンティティ型の結果セット(注: 私の謙虚な小さなブログをトラフィックする人があまり多くないため、サーバーがディスクを起動するのに数分かかる場合があります)。
それの短いはCSDLセクションにあります..
<edmx:ConceptualModels>
<Schema Namespace="myModel" ...>
<EntityContainer Name="myModelEntities" ....>
......
<!--
this is what “function import” wrote, that I’m overwriting…
FunctionImport Name="MyMARS_Proc" ReturnType="Collection(myModel.Table_A)"/>
-->
<FunctionImport Name="MyMARS_Proc" >
<ReturnType Type="Collection(myModel.Table_A)" EntitySet="Table_As"/>
<ReturnType Type="Collection(myModel.Table_B)" EntitySet="Table_Bs"/>
</FunctionImport>
次に、MSL (CS マッピング セクション) で必要な...
<edmx:Mappings>
<Mapping Space="C-S" ....>
<EntityContainerMapping ....>
<FunctionImportMapping FunctionImportName="MyMARS_Proc"
FunctionName="myModel.Store.MyMARS_Proc">
<ResultMapping>
<EntityTypeMapping TypeName="myModel.Table_A"/>
</ResultMapping>
<ResultMapping>
<EntityTypeMapping TypeName="myModel.Table_B"/>
</ResultMapping>
</FunctionImportMapping>
それは非常に興味深い質問です。私はしばらくの間.NET4.5Beta / VS11 Betaで遊んでいましたが、2つの観察結果があります。
ResultMapping
異なる結果セットをマップするために複数を宣言することは許可されておらず、それぞれResultMapping
が単一の結果セットのみをマップできるため、2011年6月のCTPに関する以前の記事は無効になっているようです。編集:
私は間違っていた。実行時に機能します。設計者だけがEDMX検証について不平を言いますが、MSL自体は複数のResultMapping
要素を受け入れます。質問にリンクされている元のウォークスルーは引き続き有効です。