2017-12-12 2 views
1

Also lassen Sie uns sagen, ich habe einen Verweis auf eine System.Data.Entity.Database wieErstellen einer Datenbank mit Code-First-Migrationen: Wie lautet die Reihenfolge der Operationen zwischen db.Initialize (...) und db.Create()?

Database db = context.Database; 

und ich möchte

  • die Datenbank von Grund auf neu erstellen, wenn es nicht
  • aktualisieren es existiert, wenn es vorhanden ist (Synchronisieren Sie es mit den Migrationsskripten)

direkt aus C# land (nicht Package Manager Console).

Ich habe

if(!db.Exists()) 
{ 
    db.Create(); 
} 

zu beginnen. Aber ich bin mir nicht sicher wann/wenn ich db.Initialize verwenden muss. Wie genau unterscheidet sich das von db.Create? Kann jemand das erklären?

Ferner, wenn ich bei the documentation aussehen sagt es über Create dass

Beachten Sie, dass diese Methode vor der Datenbank-Initialisierung Strategie Aufruf hat, wird deaktivieren laufen diese Strategie auszuführen.

Was bedeutet das?

Antwort

0

Es gibt vier verschiedene Datenbankinitialisierung Strategien :(http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx)

  • CreateDatabaseIfNotExists
  • DropCreateDatabaseIfModelChanges
  • DropCreateDatabaseAlways
  • Custom DB Initializer

Sie Strategie durch:

Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>()); 

Diese Strategie wird automatisch ausgeführt, wenn Sie zum ersten Mal einen SQL-Befehl an Ihre DB oder während des Aufrufs der Initialize-Methode auslösen. Sie müssen es also nicht anrufen, es wird trotzdem angerufen.

Aber wenn Sie Create Methode aufrufen, bedeutet dies, dass Sie nur neue DB erstellen und Ihre Initialisierungsstrategie ignorieren möchten.

Verwandte Themen