当 SetOutputIdentity = false 时 EFCore.BulkExtensions 是否禁用外键检查?

问题描述 投票:0回答:1

我正在使用 EFCore.BulkExtensions 进行批量插入,我想确认库在这些操作期间如何处理外键约束。

当 SetOutputIdentity = false 时 EFCore.BulkExtensions 是否自动禁用外键检查? 如果没有,是否存在库可能在批量操作期间隐式禁用外键约束的情况?

在我的例子中,FK 约束在进行一些批量插入后会重新禁用,但并非每次都会发生。

我使用 EFCore.BulkExtensions 执行批量插入,并设置 SetOutputIdentity = false 来优化插入操作,因为我不需要插入后自动生成的标识值。

c# .net entity-framework entity-framework-core bulkinsert
1个回答
0
投票

不,这只是一个关于之后是否检索身份值的设置,它不会影响实际的命令。

批量复制后出现不受信任的约束是因为你没有在

SqlBulkCopyOptions
上设置
BulkConfig
。这需要有标志
CheckConstraints
,这意味着将在插入/更新/删除时检查约束,因此不会标记为不可信。您可能还想要
FireTriggers

另外,如果你想提高性能,以锁定整个表为代价,你可以使用

TableLock

有关更多信息,请参阅文档此处此处

© www.soinside.com 2019 - 2024. All rights reserved.