【发布时间】: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