2016-06-30 43 views
5

Pracuję nad projektem ASP.NET MVC z Entity Framework z kodem najpierw z bazy danych. Dostaję modele dla każdej tabeli w bazie danych. Zrobiłem kilka zmian w modelach włączona migracje i kiedy początkowej migracji pojawia się błąd:Obiekt migracji EF już istnieje błąd

There is already an object named 'TableName' in the database."

Próbowałem z update-database -force ale nie pomogło. Początkowa migracja tworzy tabele, które już istnieją!

Jak dokonać migracji początkowej zastosować zmiany w modelach i nie tworzyć tabele od początku?

Jaka jest najlepsza praktyka do synchronizowania zmian między bazą danych a modelami w tym przypadku?

Odpowiedz

11

spróbuj uruchomić komendę w opakowaniu konsoli Menedżer

Add-Migration InitialCreate –IgnoreChanges 

. Spowoduje to utworzenie pustej migracji z bieżącym modelem jako migawki. a następnie Uruchom polecenie w konsoli programu Package Manager Console. To zastosuje migrację InitialCreate do bazy danych. Ponieważ faktyczna migracja nie zawiera żadnych zmian, po prostu doda wiersz do tabeli __MigrationsHistory, wskazując, że migracja została już zastosowana.

zobaczyć this

następnie zmienić swoje modele i dodać migracji.

inne podejście jest po prostu wypowiedzieć cały kod na górę iw dół metod

+0

prace do teraz. Dzięki – Arianit

+0

jest jakiś sposób, który synchronizuje modele, jeśli dokonam zmian w bazie danych w SqlServer Managenment Sdutio? – Arianit

+0

Myślę, że będziesz musiał zregenerować modele tak, jak robisz w bazie danych najpierw podejście –

1

rozwiązanie Amr Alaa działa, ale baza danych nie migrują do najnowszego modelu.

Oto jak to działa (używając automatycznej migracji):

  1. Usuń Migracje folderu
  2. Execute enable-migracje
  3. ustawić to dwie właściwości true w nowo utworzony Configuration.cs

    public Configuration() 
    { 
        AutomaticMigrationsEnabled = true; 
        AutomaticMigrationDataLossAllowed = true; 
    } 
    
  4. Wykonywanie aktualizacji bazy danych -Force

Twoja baza danych zostanie zaktualizowana do najnowszego schematu i będzie gotowa.

mam nadzieję, że to pomoże.

1

Najlepszy i pracuje dla mnie pomysł jest aby skomentować cały kod w górę iw dół funkcji początkowego pliku migracji, a następnie ogień dotnet ef database update to powinno działać dobrze, upewnij się aktualizować migrację przed zakomentowanie wstępną migrację

+0

To działało dla mnie, ale z aktualizacją bazy danych "dotnet ef" – Maxime

+0

@Maxime dziękuję, że zaktualizowałem Odpowiedź była głupim błędem –