2015-11-17 89 views
0

我試圖運行的實體框架(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"); 
} 
+1

試試'ALTER TABLE dbo.MyTable DROP CONSTRAINT FK_MyTable_MyOtherTable' – DavidG

+0

你可能會寫一個不正確的表名或者fk名 –

+0

你能檢查最後得到的字符串是什麼,可能需要包含一些空格。 – Baskar

回答

0

我重新啓動SQL Express和VS2015,似乎清除了問題。