74 Stimmen

Wie kann ich die Migration in Entity Framework 6.0 deaktivieren?

Ich versuche, die "Automatische" Migration mit Entity Framework 6.0 rc1 zu ignorieren. Mein Problem ist, dass ich dieses Feature im Moment nicht nutzen möchte und jedes Mal, wenn meine Anwendung läuft, sehe ich alle Entity-Logs, die versuchen, alle Tabellen zu erstellen.

Vielen Dank im Voraus.

51voto

Carlos Teixeira Punkte 714

Sie können dies in den EntityFramework-Abschnitt der app.config einfügen:

Diese MSDN-Seite informiert über den Entity Framework-Konfigurationsabschnitt.

50voto

SeyedPooya Soofbaf Punkte 2600

Versuchen Sie das:

interne versiegelte Klasse Konfiguration : DbMigrationsConfiguration
{
    public Konfiguration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

UPDATE:

Sie können auch das versuchen:

Database.SetInitializer(new CreateDatabaseIfNotExists());

30voto

Aaron Sherman Punkte 3669

Über die web.config siehe - https://msdn.microsoft.com/de-de/data/jj556606.aspx#Initializers

Über Code (komischerweise VIEL einfachere Antwort)

public class MyDB : DbContext
{
    public MyDB()
    {
        Database.SetInitializer(null);
    }
}

oder in Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // ...

        Database.SetInitializer(null);

        // ...

    }
}

4voto

javovo Punkte 307

Wenn Sie diese Frage gefunden haben und gehofft haben, eine einfache Antwort zum Deaktivieren von Migrationen zu finden, weil Sie "Enable-Migrations" eingegeben haben und jetzt die Dinge nicht so funktionieren, wie Sie es erwartet haben, z.B. nicht die Seed-Methode ausführen, die Sie dachten, dass sie ausgeführt würde, dann schauen Sie im Lösung Explorer nach und löschen Sie den Migrations-Ordner. Das wird den Code davon abhalten, auf die Migrationskonfiguration zuzugreifen, um Initialisierungscode zu finden. Um den Migrations-Ordner zurückzubekommen, führen Sie einfach erneut "Enable-Migrations" aus.

3voto

user663470 Punkte 149

Der Fehler, den ich gemacht habe, bestand darin, Database.SetInitializer(null); zu spät aufzurufen (nachdem der Kontext initialisiert wurde). Der beste Weg, um sicherzustellen, dass Migrationen deaktiviert sind, besteht darin, den obigen Aufruf für alle Ihre Kontexte beim Start Ihrer Anwendung zu tätigen. Ich bevorzuge diesen Ansatz gegenüber der Einstellung in der app.config, damit ich meinen Container verwenden kann, um meine Kontexte zu lokalisieren und dann einen Aufruf zu erstellen.

var migrationsMethod = typeof(System.Data.Entity.Database).GetMethod("SetInitializer");
foreach (var contextType in allContextTypes)
{
    migrationsMethod.MakeGenericMethod(contextType).Invoke(null, new object[] { null });                            
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X