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");
}
試試'ALTER TABLE dbo.MyTable DROP CONSTRAINT FK_MyTable_MyOtherTable' – DavidG
你可能會寫一個不正確的表名或者fk名 –
你能檢查最後得到的字符串是什麼,可能需要包含一些空格。 – Baskar