c# - 不支持 SQL Server 表值参数列。类型是 'Object'

标签 c# sql sql-server stored-procedures table-valued-parameters

我不得不问这个,因为它困扰着我,我找不到这个问题的具体根源。我知道如何在 Sql Server 中使用 TVP(表值参数),我正在使用它在我的存储过程中进行批量插入。所以基本上我在 Sql 中创建表类型,其中包含我要插入记录的表的相应列/字段,从代码 (C#) 到 sql 存储过程,它对我来说工作正常,现在这是我的问题:最近当用户尝试插入多条记录,表参数中有某些随机字段会在尝试执行存储过程时给出此类错误消息(主要是在 C# 中,因为它会抛出一些错误)。

The type of column '{field}' is not supported. The type is 'Object'

每次出现时,错误消息中的字段都会发生变化,因此我知道问题出在数据中,但我不知道是什么。顺便说一句,这就是我将数据从源传输到将用作插入参数的数据表的方式:

dr["{field_name}"] = {value}

更新:我想详细说明如何将值传输到数据表。基本上我会尝试通过

遍历数据表中的所有行
table.Rows.Cast<DataRow>().ToList().ForEach( action => {statements})

然后在foreach里面,我赋值

action["{field_name}"] = action["{field_name}"].{formatting_function}

我需要在将数据插入数据库之前对其进行格式化,例如。转换为大写或小写或转换为特定类型,例如。 bool 值。

最佳答案

您作为参数传递的表与预期的表值参数不“列兼容”。

您为表值参数中的列(“{field}”)传递的类型(“对象”)与相应列的类型不兼容。

构建表值时,请确保所有列类型都与预期参数兼容。

在这里查看更多: Table-Valued Parameters

关于c# - 不支持 SQL Server 表值参数列。类型是 'Object',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286828/

相关文章:

c# - InvalidConstraintException 仅在设计器中?

c# - 保护 Winform 页面的最佳方式?

mysql - 使用 JOIN 删除行

sql-server - access和sql server实时同步

sql - 索引 SQL 表以查找最佳匹配字符串的最佳方法

sql-server - 如何在两列上使用动态列名进行 SQL PIVOT?

c# - Silverlight ComboBox 绑定(bind)到 IEnumerable<BitmapImage>,其中图像从服务器下载

c# - 按时间对日期时间列表排序

MySQL如何填充范围内缺失的日期?

sql - 是否可以在 sql From 子句中使用 Case 语句