Ausgabe
Ich bin neu in einem Projekt und es gibt diese Klasse für die Seed-Daten:
internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
Und dieser Code, um den Seed zu starten:
protected override void Seed(Context context)
{
try
{
Meine Frage ist: wann wird die Seed
Methode aufgerufen? Nur wenn ein Benutzer update-database
die Datenbank hat und der Benutzer nicht hat (im Grunde ein neuer Benutzer), oder auch wenn der Benutzer mit einer vorhandenen Datenbank eine update-database
?
Lösung
Die Seed-Methode wird verwendet, um einige bekannte statische Daten wie Länder, Staaten mit der anfänglichen Datenbank zuerst im Code zu haben. Die Seed-Methode wird diese Daten jedes Mal ausführen und füllen, wenn die Datenbank neu erstellt wird.
Ein weiterer Anwendungsfall ist die Verwendung während der Entwicklungs-/Testphase, in der Sie häufig die Datenbank neu erstellen und Datenbanktabellen mit Beispieldaten füllen müssen.
In einem anderen Szenario, wenn diese statischen Daten hinzugefügt werden müssen, ohne die Datenbank zu löschen (weil sie echte Daten enthält), wird die Seed-Methode für Migrationen verwendet. Immer wenn Sie die Migration ausführen und die Datenbank aktualisieren, wird die Seed-Methode ausgeführt. Hier muss mit der Seed-Methode mit langer Laufzeit vorsichtig sein, da sie bei jedem Start der Anwendung ausgeführt wird.
Weitere Erläuterungen finden Sie in den Datenbankinitialisierer- und Migrations-Seed-Methoden .
Beantwortet von – Mukesh Modhvadiya
Antwort geprüft von – David Goodson (FixError Volunteer)