0

一旦通过实体Framework Core 1.1 with Migrations在ASP.NET核心Code First应用程序中创建FK约束,是否可以在不使用EF的情况下直接在SQL Server中启用/禁用约束?打破通过EF等创建的迁移? 背景:我需要从通过EF代码优先创建的FK's引用多个表的表中截断数据。正如预期的那样,SQL Server抱怨你可以截断表,因为它被FK引用了。EF代码第一次迁移和外键约束

+0

您还可以将SQL脚本添加到您的迁移文件。这样你会有更多的灵活性。 – Ignas

+0

@lgnas我们如何做到这一点? – nam

+0

例如:https://stackoverflow.com/questions/26535189/entity-framework-execute-sql-before-migrations – Ignas

回答

0

任何在SQL Server数据库模式中更改的代码都不会破坏迁移。您应该删除代码中用于执行操作的外键引用,然后再重新创建它们。尽管如此,请注意,如果数据处于不一致状态,则可能无法在不丢失数据的情况下重新创建约束。

+0

我没有改变模式,即没有删除约束,只是暂时禁用它们。 – nam

+0

但是,它将在内部使用命令“ALTER TABLE TableName NOCHECK CONSTRAINT ConstraintName”,因此它将打破迁移。 –

+0

由于我暂时禁用了他们,我会让他们回来 – nam

0

不,它不会中断迁移。如果您在数据库上做了任何事情,然后将数据库的模式设计恢复到较早的状态,那么迁移将运行良好。应用时迁移期望数据库中EF管理对象的形状保持不变(如之前所知)。任何临时更改对于迁移都是不可见的。之后状态需要相同,因为在应用未来迁移时会出现适当的对象,否则DDL可能导致失败。