Мы используем SqlBulkCopy.WriteToServer для записи DataTable в таблицу в SQL Server.Столбец, указанный в исключении, НЕ равен NULL, но в DataTable нет нулевых значений.Я добавил код для явной проверки каждой строки в DataTable, ни одна не имеет значения NULL, но я получаю эту ошибку.Еще более странным является то, что этот же столбец включен в другой BulkCopy с теми же данными, и он работает.Единственное отличие состоит в том, что в случае, если он работает, есть еще два столбца.
По сути, у меня есть словарь, и я заполняю DataTable, используя foreach.
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