如何忽略linq-to-sql中违反主键约束的情况

本文关键字:约束 情况 何忽略 linq-to-sql | 更新日期: 2023-09-27 17:58:28

我有一个表,其中两个字段(idLocation, zipcode)都用作主键:

CREATE TABLE [dbo].[locationZipCode](
    [idLocation] [int] NOT NULL,
    [zipcode] [char](5) NOT NULL,
    [state] [char](2) NULL,
    CONSTRAINT [locationZipCode_pk_idLocation_zipcode] PRIMARY KEY CLUSTERED ([idLocation], [zipcode])
 )

在我的应用程序中,我正在呼叫:

context.InsertAllOnSubmit(entities);
context.SubmitChanges(ConflictMode.ContinueOnConflict);

当试图插入重复的记录时,会出现重复密钥冲突。这是意料之中的事。如果有任何记录重复,则不会插入任何记录是否可以忽略重复密钥异常并继续插入任何不违反主键约束的记录

我意识到我可以在应用程序中调用InsertAllOnSubmit()之前验证重复,但如果我能发现错误并继续插入,那将是理想的选择。

如何忽略linq-to-sql中违反主键约束的情况

For SQL Server IGNORE_DUP_KEY标志使数据库引擎忽略密钥冲突。若键存在,则数据库中不会发生任何更改。

 CREATE UNIQUE CLUSTERED INDEX [locationZipCode_idx] ON locationZipCode
 (
    [idLocation] ASC, [zipcode] ASC
 ) WITH ( IGNORE_DUP_KEY = ON )

不要忘记先删除当前PK。