我已经将现有数据库反向工程化为代码优先模型。有些表格需要保留,但大多数表格将被删除并完全重新构建新版本。由于外键约束,实体框架迁移无法删除表
我删除了一些旧类及其映射和添加迁移。
迁移看起来是这样的:
public override void Up()
{
DropForeignKey("dbo.Bingo_Review", "BingoID", "dbo.Bingo");
DropForeignKey("dbo.Bingo_Review_Text", "BingoReviewID", "dbo.Bingo_Review");
DropForeignKey("dbo.Bingo_Bonus", "BingoID", "dbo.Bingo");
DropForeignKey("dbo.Bingo_Bonus_Amount", "BingoBonusID", "dbo.Bingo_Bonus");
DropIndex("dbo.Bingo_Bonus", new[] { "BingoID" });
DropIndex("dbo.Bingo_Review", new[] { "BingoID" });
DropIndex("dbo.Bingo_Review_Text", new[] { "BingoReviewID" });
DropIndex("dbo.Bingo_Bonus_Amount", new[] { "BingoBonusID" });
DropTable("dbo.Bingo_Bonus");
DropTable("dbo.Bingo");
DropTable("dbo.Bingo_Review");
DropTable("dbo.Bingo_Review_Text");
DropTable("dbo.Bingo_Bonus_Amount");
DropTable("dbo.Bingo_Bonus_Type");
}
然而,当我运行迁移,我得到了包管理器控制台下面的错误。
Could not drop object 'dbo.Bingo_Bonus' because it is referenced by a FOREIGN KEY constraint.
为什么当迁移应该在drop table命令之前删除任何外键时会出现此错误?有没有办法解决?
可能是你还是忘了从任何表中删除BingoBonusID。一旦检查它可能是你会得到解决方案。 – Tonny
谢谢。不过,我搜索了宾果的解决方案,唯一的参考是在我上面提供的迁移类中。 –