SqlBulkCopy.WriteToServer выдает исключение «столбец не допускает ноль» - PullRequest
1 голос
/ 21 июня 2019

Мы используем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...