我的项目基于代码优先方法。
我有一个自定义声明的迁移,使用声明的Up和Down方法(修复我项目中先前合并的分支问题)。
之后我尝试了几次回滚并应用我的自定义迁移, - 一切正常。
但是在teamCity项目编译期间,它会抛出一个错误,因为它与visual studio的迁移方式不同,它会尝试回滚Up方法,删除不存在的约束,但我在Up和Down方法中有不同的外键。 / p>
如何在尝试执行DropForeignKey(...)之前检查foreignKey是否存在?
答案 0 :(得分:3)
要回答您的原始问题,我在FluentMigration上找到了检查外键是否存在的方法:
Schema.Schema(<yourschema>).Table(<yourtable>).Constraint(<yourFKname>).Exists()
对于完成事项,在Constraint方法中,您可以放置任何约束名称,就像方法名称所示。
这是检查表是否存在的方法:
Schema.Schema(<yourschema>).Table(<yourtable>).Exists()
太糟糕了,我迟到了一年,或者......读你解决问题的方法,也许不是:)
答案 1 :(得分:0)
我发现,探究这个假设,问题在于实体之间外键的实现不正确。 在我的情况下,已经将不正确的迁移部署到生产中,因此我的解决方案是:
生成回滚脚本到有效迁移且迁移不正确(在Package Manager Console中这是命令:Update-Database -TargetMigration:-Script)
回滚到有效的迁移,并生成新的正确迁移脚本。