gpt4 book ai didi

dapper - 使用 Dapper for .NET Core 返回输出参数

转载 作者:行者123 更新时间:2023-12-01 10:34:01 24 4
gpt4 key购买 nike

当我从模板对象创建 DynamicParamters 时,我正在努力解决如何使用 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") 会抛出一个 KeyNotFoundExceptionparameters.Get<int?>("@Id") 返回空值。

我的 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()

尝试为我的 DynamicParameters 使用对象模板时,从 Dapper 获取输出参数的正确方法是什么?

最佳答案

想通了,当我从模板移动到参数时没有正确更新我的代码。我将 entity 传递到我的查询中,而不是 parameters 。一旦我替换了它,我什至可以摆脱 Id 输出参数的显式添加。这好多了!

var parameters = new DynamicParameters(entity);
parameters.Output(entity, x => x.Id);

await conn.ExecuteAsync(
"TodoItemInsert", parameters,
commandType: CommandType.StoredProcedure);

关于dapper - 使用 Dapper for .NET Core 返回输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com