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()我的应用程序之前验证重复,但是如果我能捕捉到错误并继续进行插入操作,那将是理想的选择。
对于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。
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |