Khi sử dụng SqlBulkCopy trên một bảng với một khóa chính GUID và newsequentialid mặc định()Làm thế nào có thể sử dụng SQLBulkCopy trên một bảng với một khóa chính GUID và mặc định newsequentialid()?
ví dụ
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]
với mã C#
tran = connection.BeginTransaction();
SqlBulkCopy sqlCopy = new SqlBulkCopy(connection,SqlBulkCopyOptions.Default, tran);
sqlCopy.DestinationTableName = "MyTable";
sqlCopy.WriteToServer(dataTable);
Cung cấp cho bạn một lỗi ...
Cột 'MyPrimaryKey' không cho phép DBNull.Value
Tôi đã thử sử dụng SqlBulkCopyOptions. Điều duy nhất hoạt động là thiết lập trường MyPrimaryKey để cho phép null và loại bỏ khóa chính.
Bất kỳ ai biết liệu có giải pháp cho sự cố này không? Hoặc bạn có thể xác minh rằng không có cách giải quyết nào khác (ngoài việc thay đổi cấu trúc bảng)?
Tuyệt vời, điều này đã giúp tôi !!!!! – HaBo
JRummell, cột GUID có tự động tạo ra một giá trị mới cho mỗi hàng được chèn qua lệnh SQLBULKCOPY không? Cảm ơn trước. –