Mam odwrotną inżynierię istniejącej bazy danych do modelu pierwszego kodu. Niektóre tabele mają być przechowywane, ale większość ma zostać usunięta i całkowicie zmieniona na nową wersję.Migracje Entity Framework nie mogą upuszczać tabeli z powodu ograniczenia klucza obcego.
Usuwam niektóre stare klasy oraz ich mapowanie i dodawanie migracji.
Migracja wygląda następująco:
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");
}
Jednak gdy uruchomię migrację, pojawia się następujący błąd w konsoli menedżera pakietów.
Could not drop object 'dbo.Bingo_Bonus' because it is referenced by a FOREIGN KEY constraint.
Dlaczego pojawia się ten błąd, gdy migracja powinna już upuścić wszystkie klucze obce przed poleceniem tabeli kropel? Czy jest jakiś sposób obejścia tego?
Może być jeszcze zapomniał usunąć BingoBonusID z każdego stołu. Po sprawdzeniu może ci się uda rozwiązanie. – Tonny
Dzięki. Jednak szukałem rozwiązania dla bingo i jedyne odniesienie do niego znajduje się w klasie migracji I podanej powyżej. –