2015-08-24 23 views
0

我的項目基於代碼優先的方法。Code First遷移。在調用DropForeignKey之前檢查是否存在foreignKey

我有一個自定義聲明的遷移,聲明瞭Up和Down方法(修復先前合併的分支問題在我的項目中)。

之後,我試了幾次回滾,並應用我的自定義遷移 - 所有工作正常。

但是在teamCity項目編譯期間,它會拋出一個錯誤,因爲它與遷移工作方式不同,它會嘗試回滾Up方法,刪除不存在的約束,但我在Up和Down方法中有不同的外鍵。

如何在嘗試執行DropForeignKey(...)之前檢查foreignKey是否存在?

回答

0

探索這個假設,我發現,這個問題是不正確的實體之間的外鍵實現。 在我的情況下,不正確的遷移已經已經部署到生產,所以我的解決辦法是:

  • 生成回滾腳本與所有不正確的遷移有效的遷移(在包管理器控制檯,這是命令:Update-數據庫-TargetMigration:-Script)

  • 回滾到有效遷移並生成新的正確遷移腳本。

1

要在你原來的問題回答,我發現FluentMigration辦法檢查外鍵的存在:

Schema.Schema(<yourschema>).Table(<yourtable>).Constraint(<yourFKname>).Exists() 

完成的事項,在約束方法,你可以把任何約束名,就像方法名稱所示。

這反而是檢查是否存在表的方式:

Schema.Schema(<yourschema>).Table(<yourtable>).Exists() 

太糟糕了,我晚了一年對於這一點,或...閱讀自己的方式來解決你的問題,也許不是: )

相關問題