1

注: Database First Method と DbContext で EF 4.2 を使用しています。これはコードファーストではありません。

Stored Proc メソッドを生成するために DbContext t4 テンプレートを取得しようとしています。そのための機能が組み込まれているようですが (基本の ObjectContext にマップされます)、何らかの理由でそれらの生成を頑固に拒否します。戻り値の型 (モデル型ではなく、単一の int) と関係があるのではないかと考えていますが、よくわかりません。

誰かが言う前に。はい、私は DbContext が Stored Procs をサポートしていないことを知っています。これが、t4 テンプレートが IObjectContextAdapter を使用して ObjectContext に変換する理由です。これは組み込み機能です。

以前は、メソッドは自動生成されていました。なんで今じゃないのかわからない。関数は .edmx ファイルに表示されます。これを解決する方法について何か提案はありますか?

<Function Name="pInsertMemberPayment" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  <Parameter Name="xMemberID" Type="int" Mode="In" />
  <Parameter Name="xCardHolderName" Type="varchar" Mode="In" />
  <Parameter Name="xBillingAddress" Type="varchar" Mode="In" />
  <Parameter Name="xBillingCity" Type="varchar" Mode="In" />
  <Parameter Name="xBillingState" Type="char" Mode="In" />
  <Parameter Name="xBillingZip" Type="varchar" Mode="In" />
  <Parameter Name="xAccountNumber" Type="varchar" Mode="In" />
  <Parameter Name="xExpirationDate" Type="date" Mode="In" />
  <Parameter Name="xRowCreatedSYSUserID" Type="int" Mode="In" />
  <Parameter Name="xRowCreatedDateTime" Type="datetime2" Mode="In" />
  <Parameter Name="xRowModifiedSYSUserID" Type="int" Mode="In" />
  <Parameter Name="xRowModifiedDateTime" Type="datetime2" Mode="In" />
  <Parameter Name="xMemberPaymentID" Type="int" Mode="InOut" />
</Function>
4

1 に答える 1

3

サンプル関数は SSDL のストアド プロシージャ定義を示していますが、CSDL の関数インポートまたは MSL の関数インポート マッピングのいずれも示していません。モデル ブラウザーでストアド プロシージャの関数インポートを作成しましたか? エンティティ、複合型、スカラーを返し、入力パラメーターと出力パラメーターを使用する 10 の異なる手順で DbContext Generator テンプレートをテストしたところ、それぞれのコンテキスト クラスでメソッドが生成されました (ただし、関数のインポートにマップする必要がありました)。

于 2012-01-25T20:08:05.110 に答える