テンプレートオブジェクトからDynamicParamters
を作成すると、Dapperを使用して出力パラメータをオブジェクトに適切にマップする方法に苦労しています。.NETコアのDapperで出力パラメータを返す
var parameters = new DynamicParameters(entity);
parameters.Add("@Id", dbType: DbType.Int32, direction: ParameterDirection.Output);
parameters.Output(entity, x => x.Id);
await conn.ExecuteAsync(
"TodoItemInsert", entity,
commandType: CommandType.StoredProcedure);
私の希望は、上記のコードは、最初にパラメータを作成したエンティティに結果のIDをマップすることでした。何を試しても、ストアドプロシージャから返されるパラメータを取得できません。 parameters.Get<int>("@Id")
を呼び出すとKeyNotFoundException
がスローされます。 parameters.Get<int?>("@Id")
はnullを返します。
私のSQLは
ALTER PROCEDURE [dbo].[TodoItemInsert]
@Name VARCHAR(255)
, @Description VARCHAR(512)
, @DueDate DATETIME = NULL
, @IsComplete BIT = 0
, @Id INT OUTPUT
AS
INSERT INTO
[TodoItems]
(
Name
, Description
, DueDate
, IsComplete
)
VALUES
(
@Name
, @Description
, @DueDate
, @IsComplete
)
SET @Id = SCOPE_IDENTITY()
非常に基本的な挿入SPROCをである私のDynamicParameters
のためのオブジェクト・テンプレートを使用しようとすると、バックDapperの出力パラメータを取得するための正しい方法は何ですか?