gpt4 book ai didi

c# - 我可以将 DynamicParameters 与模板一起使用并在 dapper 中有一个返回参数吗?

转载 作者:太空狗 更新时间:2023-10-30 00:27:06 24 4
gpt4 key购买 nike

我目前正在使用的系统使用存储过程进行所有数据访问。我目前正在研究 Dapper(到目前为止它看起来很棒)但我想知道我是否可以使用使用模板创建的 DynamicParameters 对象,但将其中一个参数作为输出参数。例如:

SP:

CREATE PROCEDURE InsertPerson
@ID int Output,
@Name varchar(100),
@DOB DateTime2
AS
--INSERT STATEMENT

SET @ID = SCOPE_IDENTITY()

POCO:

internal class Person
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime DOB { get; set; }
}

代码:

var procParams = new DynamicParameters(person);
connection.Execute("InsertPerson", procParams, commandType: CommandType.StoredProcedure);

// This is where i'm having the issue, can it be done?
person.ID = procParams.Get<int>("ID");

当前我收到一条错误消息,因为找不到 key 。有没有办法在不手动设置所有存储过程参数的情况下获取 ID 输出参数?

最佳答案

通过快速调整,Add 现在替换模板中的值,允许:

public void TestProcWithOutParameter()
{
connection.Execute(
@"CREATE PROCEDURE #TestProcWithOutParameter
@ID int output,
@Foo varchar(100),
@Bar int
AS
SET @ID = @Bar + LEN(@Foo)");
var obj = new
{ // this could be a Person instance etc
ID = 0,
Foo = "abc",
Bar = 4
};
var args = new DynamicParameters(obj);
args.Add("ID", 0, direction: ParameterDirection.Output);
connection.Execute("#TestProcWithOutParameter", args,
commandType: CommandType.StoredProcedure);
args.Get<int>("ID").IsEqualTo(7);
}

是否足够接近?您还可以使用预先存在的值或新值的 ParameterDirection.ReturnValue。请注意,它不会直接更新回原始模板;该值必须从 DynamicParameters 实例中获取(如图所示)。

关于c# - 我可以将 DynamicParameters 与模板一起使用并在 dapper 中有一个返回参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011225/

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