我们有一个ASP.NET Web应用程序,该应用程序首先使用EntityFramework代码执行插入/更新,并且至少对于我们数据库的外国键,它们会在我们使用我们使用行插入行的任何时候都变得不受信任EF。
重要说明:
- 没有一个外键被标记为不复制
- 限制没有明确禁用,然后重新启用,我知道,如果我们禁用和重新确定我需要"使用检查约束">
我已经尝试运行SQL Profiler,以查看是否发生了任何奇怪的事情,但我什么也没看到。我看了看EF是否在做任何"合并"陈述,因为我发现某些内容表明这些陈述可能会使约束不受信任。我的理解是,如果没有一些解决方法,EF将不会做任何"合并"陈述。我唯一能想到的与默认设置不同的是,快照隔离已打开,但我没有发现任何说这会影响FKS的信任。
编辑:只想补充说我已经运行了SQL语句以重新信念FKS,然后在Web应用程序中运行一个序列,该序列将相同的FKS带回不受信任。它是可重复的。
还有什么可能导致它,或者我还能尝试确定为什么它们变得不受信任?
编辑:在呼叫树的深处,我们正在使用效率库进行批量插入,默认情况下该库不启用或提供替代,以启用对基础SQLBULKCOPY对象的约束检查。从那以后,我们已经分叉并修改了效率(原始项目在GitHub上几乎已经死了(库,以添加一个方法过载,以用于sqlbulkcopyoptions。
我们正在使用库,效率,用于不检查约束且没有能力覆盖选项的批量插入。我们最终分配了代码库,并对库进行了一些更改,以提供将SQLBulkCopyOptions对象传递到Insertall((方法的能力。我们的项目仅存在脱机,因此我没有指向我们专门进行更改的github链接,但是它与这些提交中所做的更改非常相似,只有我们默认我们以检查约束:添加了对sqlbulkcopyptions上的"插入" interall"界面上的支持。。#35