【发布时间】:2008-09-26 08:30:18
【问题描述】:
在具有 GUID 主键和默认 newsequentialid() 的表上使用 SQLBulkCopy 时
例如
CREATE TABLE [dbo].[MyTable](
[MyPrimaryKey] [uniqueidentifier] NOT NULL CONSTRAINT [MyConstraint] DEFAULT (newsequentialid()),
[Status] [int] NULL,
[Priority] [int] NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY NONCLUSTERED
(
[MyPrimaryKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
使用 C# 代码
tran = connection.BeginTransaction();
SqlBulkCopy sqlCopy = new SqlBulkCopy(connection,SqlBulkCopyOptions.Default, tran);
sqlCopy.DestinationTableName = "MyTable";
sqlCopy.WriteToServer(dataTable);
给你一个错误...
“MyPrimaryKey”列不允许 DBNull.Value
我试过摆弄 SqlBulkCopyOptions。唯一可行的是将 MyPrimaryKey 字段设置为允许空值并删除主键。
有人知道这个问题是否有解决方法吗? 或者您能否验证没有解决方法(除了更改表结构)?
【问题讨论】: