如何忽略LINQ to SQL中的主键约束冲突

bfl*_*mi3 2 c# exception-handling linq-to-sql

我有一个表,其中两个字段(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])
 )
Run Code Online (Sandbox Code Playgroud)

在我的应用中,我正在调用:

context.InsertAllOnSubmit(entities);
context.SubmitChanges(ConflictMode.ContinueOnConflict);
Run Code Online (Sandbox Code Playgroud)

当尝试插入重复记录时,将收到重复键冲突。这是预期的。如果有任何记录重复,则不会插入任何记录。 无论如何,有没有忽略重复的键异常并继续插入任何不违反主键约束的记录?

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

Anr*_*nri 5

对于SQL Server,IGNORE_DUP_KEY标志使数据库引擎忽略键冲突。如果密钥存在,则DB中没有任何更改。

 CREATE UNIQUE CLUSTERED INDEX [locationZipCode_idx] ON locationZipCode
 (
    [idLocation] ASC, [zipcode] ASC
 ) WITH ( IGNORE_DUP_KEY = ON )
Run Code Online (Sandbox Code Playgroud)

不要忘记先删除当前的PK。