1

我正在使用 EF 代码首先生成的数据库,它提供一些种子数据,并从其他数据库导入数据(一万行,因此在 EF 中播种没有意义)。为了简化流程,我想我可以只编写整个数据库数据的脚本。因此,如果我需要再次 DropCreate(现在我们使用迁移策略)我的数据库,我可以一次为所有数据播种。

但是,SQL Server 生成的脚本会导致很多这样的冲突:

INSERT 语句与 FOREIGN KEY 约束冲突...

我可以想象这是因为我们的数据非常复杂,并且以错误的顺序插入数据会导致这种情况。有什么方法可以让 .sql 脚本在填充表之前忽略/关闭数据库的所有外键约束,然后在插入完成后重新打开它们?插入所有数据后,应该没有约束问题。

4

1 回答 1

1

是的,您可以暂时禁用外键:

ALTER TABLE MyTable NOCHECK CONSTRAINT FK_MyTable_MyKey

当您重新启用约束时,您应该检查约束以确保没有违规,就像这样(注意双重检查检查)

ALTER TABLE [MyTable] WITH CHECK CHECK CONSTRAINT FK_MyTable_MyKey

有关数据库级解决方案,请参阅这篇文章。

于 2012-08-14T15:31:18.010 回答