实体框架说外键不存在,但确实存在

本文关键字:存在 不存在 框架 实体 | 更新日期: 2023-09-27 18:22:14

我正在尝试运行实体框架(v6.1.3)迁移更新,代码如下:

public override void Up()
{
    Sql("IF EXISTS (SELECT name FROM sys.foreign_keys WHERE name = 'FK_MyTable_MyOtherTable') " +
        "ALTER TABLE dbo.MyTable DROP FK_MyTable_MyOtherTable");
}

但当我运行update-database命令时,它一直抛出以下错误:

"FK_MyTable_MyOtherTable"不是约束。无法删除约束。请参阅以前的错误。

如果我在SQLServerManagementStudio中运行SQL,则不会显示任何错误,并且会删除外键。

编辑:刚刚在下面测试了这段代码,它也能正常工作。有什么区别?

public override void Up()
{
    DropForeignKey("dbo.MyTable", "FK_MyTable_MyOtherTable");
}

实体框架说外键不存在,但确实存在

我重新启动了SQL Express和VS2015,这似乎解决了问题。