我们使用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