6

現在、asp.net mvc 4.5 および EF5 Beta 2 でコーディングしており、複数の結果セットを返すストアド プロシージャがあります。このサイトを見つけましたが、新しいバージョン (私が使用している) は既に複数の結果セットをサポートしていると書かれています。

今、私はそのサポートを見つけることができないようです。私は EF にまったく慣れていないので、間違ったことをしていないことを願っています。

作成された結果セットに対応するエンティティがデータベースにありません。

4

3 に答える 3

4

コア 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>
于 2012-05-02T18:39:44.277 に答える
1

それは非常に興味深い質問です。私はしばらくの間.NET4.5Beta / VS11 Betaで遊んでいましたが、2つの観察結果があります。

  • Designerでは複数の結果セットがサポートされていないようです-XMLとして開いたEDMXですべてを手動でマッピングする必要があります
  • MSLではResultMapping異なる結果セットをマップするために複数を宣言することは許可されておらず、それぞれResultMappingが単一の結果セットのみをマップできるため、2011年6月のCTPに関する以前の記事は無効になっているようです。

編集:

私は間違っていた。実行時に機能します。設計者だけがEDMX検証について不平を言いますが、MSL自体は複数のResultMapping要素を受け入れます。質問にリンクされている元のウォークスルーは引き続き有効です。

于 2012-04-25T19:43:03.427 に答える