sql-server – 使用Dapper.TVP TableValueParameter与其他参数
发布时间:2020-12-12 16:33:55 所属栏目:MsSql教程 来源:网络整理
导读:我有一个过程,其中包含一个表值参数,以及其他参数: CREATE PROCEDURE [dbo].[Update_Records] @currentYear INT,@country INT,@records Record_Table_Type READONLYAS 我试图用Dapper.TVP来称呼它. 以下是我到目前为止的代码: var recordsParameter = new L
我有一个过程,其中包含一个表值参数,以及其他参数:
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",new SqlMetaData("NewPercent",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,records = new TableValueParameter("@records",recordsParameter); }); connection.Execute("Update_Records",spParams,commandType: CommandType.StoredProcedure); 和 connection.Execute("Update_Records",new Object[] { spParams,recordsParam },commandType: CommandType.StoredProcedure); 两个调用过程,但传递一个空表参数(SELECT COUNT(*)FROM @records returns 0) 我似乎找不到Dapper.TVP的任何实际的文档或源代码,所以整个事情是非常混乱的,而.Execute()的第二个参数只是一个动态的,所以再也不会告诉我我能做什么不能传递给它. 有任何想法吗? 解决方法我在手机上可能会误会这个问题,但这应该是:DataTable records = ... connection.Execute("Update_Records",new { currentYear = filter.currentYear,records },commandType: CommandType.StoredProcedure ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容