2014-06-10 3 views
18

Ich bin neu in einem Projekt und es ist diese Klasse für die Seed-Daten:Wann wird die Seed-Methode in einem ersten Migrationsszenario für EF-Code aufgerufen?

internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = true; 
     } 

diesen Code und den Samen zu starten:

protected override void Seed(Context context) 
    { 
     try 
     { 

Meine Frage ist: wenn die Seed Methode ist namens? Nur wenn ein Benutzer update-database hat und der Benutzer nicht über die Datenbank verfügt (im Prinzip ein neuer Benutzer) oder auch wenn der Benutzer mit einer vorhandenen Datenbank eine update-database aufruft?

Antwort

13

Die Startmethode wird verwendet, um die Datenbanktabellen mit einigen Startdaten zu initialisieren. Wenn Sie die Migration ausführen und die Datenbank aktualisieren, wird die Seed-Methode ausgeführt. Meistens wird es während der Testphase verwendet, in der Sie häufig die Datenbank neu erstellen und Datenbanktabellen mit Beispieldaten füllen müssen. Bitte gehen Sie durch diesen Link http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/ für mehr Erklärung auf Code zuerst.

18

Wenn es um die Seed() Methode geht, die aus DbMigrationsConfiguration Klasse kommt, wird es jedes Mal aufgerufen, wenn der Update-Database Befehl ausgeführt wird. Auch wenn der Benutzer anruft, dass er eine existierende Datenbank hat.

Es gibt noch eine andere Seed() Methode - es ist ein Datenbankinitialisierer. Sie wird aufgerufen, wenn die Datenbank erstellt wird, und verarbeitet keine vorhandenen Daten (Ausgangswert von DbMigrationsConfiguration verarbeitet sie und überprüft, ob angegebene Entitäten vorhanden sind).

Gut zu One Unicorn blog für weitere Informationen zu suchen.

+0

In der Tat, aber wenn ich einen neuen Kontext innerhalb eines Komponententests erstellen, läuft auch Seed und gibt mir alle meine Seed-Daten im Speicher. – Ian

Verwandte Themen