0

いくつかのテーブルといくつかのストアド プロシージャを含むエンティティ モデル ファイル (edmx) ファイルがあります。

関数にマップされているストアド プロシージャを呼び出すにはどうすればよいですか? 私はそれが些細なことだと思っていました.edmxファイルにマッピングが表示されていますが、コードでそれを使用する方法がわかりません.

マッピングの例を次に示します。

       <Function Name="pa_crud_broker_ADD" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
          <Parameter Name="BrokerId" Type="int" Mode="InOut" />
          <Parameter Name="Name" Type="nvarchar" Mode="In" />
          <Parameter Name="Identifier" Type="nvarchar" Mode="In" />
        </Function>

          <FunctionImport Name="pa_crud_broker_ADD" ReturnType="Collection(Int32)">
            <Parameter Name="BrokerId" Mode="InOut" Type="Int32" />
            <Parameter Name="Name" Mode="In" Type="String" />
            <Parameter Name="Identifier" Mode="In" Type="String" /></FunctionImport>
<FunctionImportMapping FunctionImportName="pa_crud_broker_ADD" FunctionName="PAEntities.store.pa_crud_broker_ADD" />

助けていただければ幸いです。

ありがとう。

4

3 に答える 3

3

私は少しさびていますが、2 つの方法のいずれかで関数を呼び出すことができるはずです。モデルから ObjectContext を生成している場合は、関数の名前 (この場合は pa_crud_broker_ADD) と一致するオブジェクト コンテキストにメソッドが必要です。次のように呼び出すことができるはずです。

var objectContext = new MyObjectContext(...);
var result = objectContext.pa_crud_broker_ADD(...);

モデルから ObjectContext を生成していない場合は、次を使用できるはずです。

var objectContext = new ObjectContext(...);
var result = objectContext.ExecuteFunction<List<int>>("pa_crud_broker_ADD", ...);

2 番目のケースで返される結果については、完全には確信が持てません。EF v1 がそのような変換をサポートしているかどうかはわかりません。私は、EF v4 がこの分野でかなりの改善を追加していることを知っているので、EF v1 がサポートしていない場合は、EF v4 を調べます。

于 2010-02-25T04:30:18.013 に答える
0

私はこれに遭遇し、ここで説明されている「関数のインポート」ステップが欠落していることに気付きました: http ://weblogs.asp.net/dotnetstories/archive/2011/03/01/using-stored-procedures-with-entity -framework-in-an-asp-net-application.aspx

一言で言えば:

  1. .edmxデザイナーを開きます
  2. 右クリックして、メニューから[追加]->[関数のインポート]を選択します。
  3. ドロップダウンからストアドプロシージャを選択します。
  4. 名前を追加します。
  5. [OK]をクリックします。
于 2012-08-22T12:56:43.833 に答える
-2

ストアド プロシージャを呼び出せないという印象を受けました...Entity Framework がそれらを呼び出します...基本的に、ストアド プロシージャはリアルタイム SQL 生成のオプションの代替品であり、Entity Framework は必要に応じてそれらを呼び出します。

Entity Framework でストアド プロシージャを手動で「呼び出す」ことができるとは聞いたことがありません...

于 2010-02-25T04:11:28.230 に答える