【发布时间】:2014-11-19 21:08:24
【问题描述】:
我有一个表定义为:
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 在CreatedOn、LastUpdatedOn 和LastUpdatedUser 中填写DBNull.Value。 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);
错误:
尝试批量复制表 csvrf_References 时出错
System.InvalidOperationException:列“CreatedOn”不允许 DBNull.Value。
在 System.Data.SqlClient.SqlBulkCopy.ConvertValue(对象值, _SqlMetaData 元数据, Boolean isNull, Boolean& isSqlType, Boolean& coercedToDataFeed)
我已经看遍了,我似乎无法找到答案。 SqlBulkCopy 类似乎不尊重默认值,即使它说它确实如此。我在这里做错了什么?
【问题讨论】:
标签: c# sql-server null sqlbulkcopy default-constraint