9

Próbuję zaktualizować bazę danych na serwerze kompilacji, a to się nie udaje, ponieważ próbuje uruchomić automatyczne migracje, nawet jeśli są wyłączone. Baza danych już istnieje i potrzebuję tylko zastosować najnowszą migrację. Oto mój kontekst:EF: Automatyczne migracje są uruchomione, gdy są wyłączone.

public sealed class Configuration : DbMigrationsConfiguration<CableSenseInstanceConfiguratorContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 
    } 
} 

Mam kilka plików migracyjnych Utworzyłem ręcznie, oto ostatni z nich:

public partial class Settings : DbMigration 
{ 
    public override void Up() 
    { 
     AddColumn("dbo.MasterInstances", "Settings", c => c.String()); 
    } 

    public override void Down() 
    { 
     DropColumn("dbo.MasterInstances", "Settings"); 
    } 
} 

Gdybym wtedy ręcznie zaktualizować bazę danych z konsoli menedżera pakietów widzę, że próbuje uruchomić automatyczną migrację (co nie działa, ponieważ tabela już istnieje):

Applying code-based migrations: [201204200805145_NoMoreCerts, 201210311451543_SuperUsers, 201301041036414_Settings, 201301041128583_Settings2]. 
Applying code-based migration: 201204200805145_NoMoreCerts. 
Applying automatic migration: 201204200805145_NoMoreCerts_AutomaticMigration. 

Moja tabela __MigrationHistory tylko ma jeden wpis dla początkowego tworzenia. Jak mogę zapobiec automatycznym migracjom?

Odpowiedz

5

Sprawdź odpowiedzi z jjslagace tutaj:

Update-Database tries to do an automatic migration even with automatic migrations disabled

Jesteś ręcznie budowaniu migracje. Domyślam się, że struktura encji chce dodać coś, czego nie ma w swoim skrypcie migracyjnym, lub chce inaczej nazwać kolumny itp. EF ma mózg, a ten mózg jest dość prosty. Oczekuje, że pewne rzeczy będą w pewnym sensie, chyba że powiesz im inaczej, używając fluent (a nie ręcznie tworząc/modyfikując pliki migracji). Z odpowiedzi na powyższe pytanie wynika, że ​​czasami zdarza się, że pojawia się problem.

Krótka historia nie tworzy plików migracji ręcznie. Zamiast tego uruchom komendę add-migrations. To utworzy dla ciebie migrację i zobaczysz, co EF spodziewa się zrobić, zanim zostanie zastosowane do twojej bazy danych (ponieważ czasami jest głupie). Jeśli chcesz przesłonić to, co EF generuje, dodaj płynne odwzorowanie w klasie DBContext, zastępując OnModelCreating. Następnie uruchom ponownie opcję migracji dodatkowej za pomocą opcji -force. Here is a good reference for using the Fluent API do spopularyzowania mapowania EF. Przepłucz i powtarzaj, aż uzyskasz migrację, której szukasz, , a następnie uruchom aktualizację bazy danych.

Nadzieję, że pomaga!

Powiązane problemy