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 Класс, похоже, не учитывает значения по умолчанию, хотя и говорит, что это так. Что я здесь не так делаю?

Ответы на вопрос(3)

Ваш ответ на вопрос