SqlBulkCopy.WriteToServer引发异常“列不允许为空”

时间:2019-06-21 11:36:33

标签: c# sql-server

我们使用SqlBulkCopy.WriteToServer将DataTable写入SQL Server中的表。异常中报告的列不是NOT NULL,但DataTable中没有空值。我添加了代码以对DataTable中的每一行进行显式检查,没有一个具有NULL值,但是却出现此错误。更奇怪的是,同一列包含在另一个具有相同数据的BulkCopy中,并且可以正常工作。唯一的区别是,在可行的情况下,还有两列。

基本上,我有一个字典,并使用foreach填充DataTable。

foreach (KeyValuePair<string, myClass> item in myDictionary)
{
    DataRow dr = myDataTable.NewRow();
    dr["columnname"] = ...
.
.
. 
    myDataTable.Rows.Add(dr)
}

我尝试添加类似的内容以查找原因:

if (string.IsNullOrEmpty(item.Value.myStringValue))
{
    Debugger.Break();
}

这永远不会被调用。但是当我这样做

bulkCopy.WriteToServer(myDataTable)

我得到一个例外,列“ x”不允许为空。我可以修改数据库中的列以允许为空值,但这不是首选的解决方案。

欢迎提出任何想法。

谢谢。

在数据表的每一行上添加对NULL的显式检查。

上方

SqlServerClient BulkCopy.WriteToServer table t does not allow null values in column c

0 个答案:

没有答案