【问题标题】:Entity Framework says foreign key doesnt exists, but it does实体框架说外键不存在,但确实存在
【发布时间】:2015-11-17 21:09:30
【问题描述】:

我正在尝试使用以下代码运行实体框架 (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' 不是约束。无法删除约束。查看以前的错误。

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

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

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

【问题讨论】:

  • 试试ALTER TABLE dbo.MyTable DROP CONSTRAINT FK_MyTable_MyOtherTable
  • 您可能写错了表名或 fk 名
  • 你能检查一下正在创建的最终字符串是什么,可能你需要包含一些空格。
  • @IgorQuirino 您建议的编辑太糟糕了,它删除了问题不可或缺的关键标签(实体框架)。

标签: c# sql .net sql-server entity-framework


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-07-15
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多