批量插入目标表标识列

时间:2016-02-11 19:30:22

标签: c# sql-server c#-4.0 c#-3.0

我正在尝试从DataTable批量插入SQL Server中的表,但在我的数据表中我没有id列。当我调用WriteToServer方法时,它会抛出一条带有消息的异常

  

无法在列ID中插入null

代码:

CREATE TABLE [dbo].[TBL_HISTORY]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [VAR1] [int] NOT NULL,
    [VAR2] [datetime] NOT NULL,
    [VAR3] [smallint] NOT NULL
)

我的dataTable有以下数据

[VAR1], [VAR2], [VAR3]

C#代码:

using(SqlBulkCopy bulk = new SqlBulkCopy(this.mConnection,SqlBulkCopyOptions.UseInternalTransaction | SqlBulkCopyOptions.KeepIdentity, null))
{
    bulk.DestinationTableName = ToTable;

    bulk.WriteToServer(dt);    // here exception is thrown
}

1 个答案:

答案 0 :(得分:3)

您需要删除SqlBulkCopyOptions.KeepIdentity选项。你告诉它使用你提供的身份,没有,也就是null。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions%28v=vs.110%29.aspx

KeepIdentity

保留源标识值。未指定时,标识值由目标分配。