Sql server 具有SQL Server IGNORE_DUP_密钥的实体框架

Sql server 具有SQL Server IGNORE_DUP_密钥的实体框架,sql-server,entity-framework,duplicates,Sql Server,Entity Framework,Duplicates,是否可以将SQL Server的IGNORE\u DUP\u KEY与实体框架的Add方法一起使用 例如: 创建表A(id int) 创建唯一的非聚集索引[IX_DUP] 在([id]ASC)上使用(忽略重复键=ON) 插入到(id)中 值(1)、(2)、(3) 在此之后,如果我这样做: 插入到(id)中 值(2)、(4) 添加了4,没有抛出错误,只是一条信息性消息: 重复的密钥被忽略 如果我这样做 var db=new DBContext(); db.A.Add(新的A{id=2}; db

是否可以将SQL Server的
IGNORE\u DUP\u KEY
与实体框架的
Add
方法一起使用

例如:

创建表A(id int)
创建唯一的非聚集索引[IX_DUP]
在([id]ASC)上使用(忽略重复键=ON)
插入到(id)中
值(1)、(2)、(3)
在此之后,如果我这样做:

插入到(id)中
值(2)、(4)
添加了4,没有抛出错误,只是一条信息性消息:

重复的密钥被忽略

如果我这样做

var db=new DBContext();
db.A.Add(新的A{id=2};
db.A.Add(新的A{id=5};
尝试
{
db.SaveChanges();
}
捕获(例外e)
{
Console.WriteLine(如ToString());
}
没有添加行,我得到

Store update、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除

我找不到解决这个问题的办法

我不想两次访问db(检查exists,然后插入)


也许如果我能让
SaveChanges
追加
SET NOCOUNT ON
它会像我期望的那样运行?

EF在检测到受影响的行和它期望修改的行数之间的差异时,总是会失败,对此你无能为力。@GertArnold你能不能暂时切换它?也许可以禁用ng并发检查?