SqlBulkCopy в таблицу, в которой значения столбца по умолчанию завершаются ошибкой, когда в исходной строке DataTable есть DBNull.Value
Обновить:Вот мое решение
У меня есть таблица, определенная как:
CREATE TABLE [dbo].[csvrf_References]
(
[Ident] [int] IDENTITY(1,1) NOT NULL,
[ReferenceID] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
[Type] [nvarchar](255) NOT NULL,
[Location] [nvarchar](1000) NULL,
[Description] [nvarchar](2000) NULL,
[CreatedOn] [datetime] NOT NULL DEFAULT (getdate()),
[LastUpdatedOn] [datetime] NOT NULL DEFAULT (getdate()),
[LastUpdatedUser] [nvarchar](100) NOT NULL DEFAULT (suser_sname()),
CONSTRAINT [PK_References] PRIMARY KEY NONCLUSTERED ([ReferenceID] ASC)
) ON [PRIMARY]
у меня естьDataTable
со столбцами, которые соответствуют именам столбцов таблицы и типам данных.DataTable
заполненDBNull.Value
вCreatedOn
, LastUpdatedOn
а такжеLastUpdatedUser
. ReferenceID
уже создан. Когда я вызываю следующий код, я получаю ошибку ниже.
Код:
SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, bulkCopyTran);
bulkCopy.DestinationTableName = table.TableName;
bulkCopy.ColumnMappings.Clear();
foreach (DataColumn col in table.Columns) bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
bulkCopy.WriteToServer(table);
Ошибка:
Ошибка при попытке таблицы BulkCopy csvrf_References
System.InvalidOperationException: столбец «CreatedOn» не допускает DBNull.Value.
в System.Data.SqlClient.SqlBulkCopy.ConvertValue (значение объекта, метаданные _SqlMetaData, логическое значение isNull, логическое значение & isSqlType, логическое значение & coercedToDataFeed)
Я осмотрелся и не могу найти ответ на этот вопрос.SqlBulkCopy
Класс, похоже, не учитывает значения по умолчанию, хотя и говорит, что это так. Что я здесь не так делаю?