3

ストアド プロシージャの OUTPUT パラメータをエンティティにマップしたいと考えています。

例えば、

PROCEDURE ForExample
@ID int,
@LastUpdate datetime OUTPUT
AS
Update EntityTable Set LastUpdate = GETDATE() Where ID = @ID
Select @LastUpdate = LastUpdate From EntityTable Where ID = @ID

@LastUpdate 出力パラメーターをエンティティ プロパティにマップしたいと考えています。

[ストアド プロシージャ マッピング] ダイアログでは、@LastUpdate パラメーターが InOut パラメーターとして表示されます (緑の矢印が両方向)。パラメータをプロパティにマップするかどうかに関係なく、同じエラーが発生します。

マッピング関数バインディングは、関数 Model.Store.ForExample をサポートされていないパラメーター LastUpdate で指定します。出力パラメーターは、R​​owsAffectedParameter プロパティを介してのみマップできます。結果バインディングを使用して、関数呼び出しから値を返します。

「結果列のバインド」に LastUpdate の手動バインドを追加しようとしましたが、うまくいきませんでした。

私がやろうとしていることはEF 4でサポートされていますか?もしそうなら、それはどのように行われますか?

4

2 に答える 2

1

エラー テキストに記載されているように、「出力パラメーターは、R​​owsAffectedParameter プロパティを介してのみマップされる可能性があります。関数呼び出しから値を返すには、結果バインディングを使用してください」

最後の更新など、何らかの値を返すプロシージャーが必要な場合は、結果セットを介して返す必要があります。つまり、ストアド プロシージャは次のようになります。

PROCEDURE ForExample
@ID int,
AS
Update EntityTable Set LastUpdate = GETDATE() Where ID = @ID
/*return lastupdate in resultset*/
Select LastUpdate as LastUpdate From EntityTable Where ID = @ID

そして、次のように結果セットの列を lastupdate プロパティにマップする必要があります。 ここに画像の説明を入力

また、ストアド プロシージャの出力パラメーターは、オプティミスティック コンカレンシーにのみ使用できます。

于 2014-01-26T10:48:22.810 に答える
0

デザイナーではなくコードを使用する別のアプローチを次に示します 。 -api.aspx

于 2014-01-26T11:08:54.193 に答える