gpt4 book ai didi

c# - 将 Dapper.TVP TableValueParameter 与其他参数结合使用

转载 作者:行者123 更新时间:2023-12-02 19:24:53 26 4
gpt4 key购买 nike

我有一个接受表值参数以及其他参数的过程:

CREATE PROCEDURE [dbo].[Update_Records]
@currentYear INT,
@country INT,
@records Record_Table_Type READONLY
AS

我正在尝试用 Dapper.TVP 来调用它。

这是我到目前为止的代码:

        var recordsParameter = new List<SqlDataRecord>();

// This metadata matches 'Record_Table_Type' in the Database
var recordsMetaData = new[]
{
new SqlMetaData("OriginalValue", SqlDbType.Decimal, 19, 4),
new SqlMetaData("NewValue", SqlDbType.Decimal, 19, 4),
new SqlMetaData("NewPercent", SqlDbType.Decimal, 7, 2),
};

foreach (var r in records)
{
var record = new SqlDataRecord(recordsMetaData);
record.SetDecimal(0, r.OriginalValue);
record.SetDecimal(1, r.NewValue);
record.SetDecimal(2, r.NewPercent);
recordsParameter.Add(record);
}

var spParams = new DynamicParameters(new
{
currentYear = filter.currentYear,
country = filter.country,
});

var recordsParam = new TableValueParameter("@records", "Record_Table_Type", recordsParameter);

using (var connection = ConnectionFactory.GetConnection())
{
connection.Execute("Update_Records", ???, commandType: CommandType.StoredProcedure);
}

我的问题是如何将两组参数传递给调用 Dapper Execute() 的过程?

我已经尝试过:

var spParams = new DynamicParameters(new
{
currentYear = filter.currentYear,
country = filter.country,
records = new TableValueParameter("@records", "Record_Table_Type", recordsParameter);
});

connection.Execute("Update_Records", spParams, commandType: CommandType.StoredProcedure);

connection.Execute("Update_Records", new Object[] { spParams, recordsParam }, commandType: CommandType.StoredProcedure);

两者都调用该过程,但传递一个空表参数(SELECT COUNT(*) FROM @records 返回 0)

我似乎找不到 Dapper.TVP 的任何实际文档或源代码,所以整个事情非常困惑,.Execute() 的第二个参数只是一个 动态,这样就不会再告诉我什么可以传递给它,什么不能传递给它。

有什么想法吗?

最佳答案

我使用的是移动设备,可能会误解这个问题,但这应该是:

DataTable records = ...
connection.Execute("Update_Records",
new {
currentYear = filter.currentYear,
country = filter.country,
records
},
commandType: CommandType.StoredProcedure
);

关于c# - 将 Dapper.TVP TableValueParameter 与其他参数结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242363/

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