Es gab eine bahnbrechende Änderung, so dass wir beschlossen, Migrationen zurückzusetzen, aber jetzt, wenn wir nicht setzen -EnableAutomaticMigrations
Option Enable-Migrations
funktioniert nicht. Meine Verbindungszeichenfolge befindet sich in meinem Webprojekt, das als Startprojekt festgelegt ist.Warum kann ich Code-Migrationen nur aktivieren, wenn auch automatische Code-Migrationen aktiviert sind?
Dies sind die Schritte, die wir haben:
Erste Wir löschte den Migrations-Ordner und die Datenbank vollständig. Dann Wenn wir das tun:
enable-migrations
Wir erhalten:
prüfen, wenn der Kontext eine bestehende Datenbank zielt ...
kann nicht Datenbank aktualisieren, um das aktuelle Modell entsprechen, weil es anhängig Änderungen und automatische Migration ist deaktiviert. Schreiben Sie die ausstehenden Modelländerungen in eine codebasierte Migration oder aktivieren Sie die automatische Migration. Setzen Sie DbMigrationsConfiguration.AutomaticMigrationsEnabled auf , um die automatische Migration zu aktivieren.
Ich verstehe diesen Fehler nicht, es gibt keine Datenbank, es gibt keine Migrationen, auf welche ausstehenden Änderungen bezieht es sich? (Ich nicht sogar chanves in git haben pending)
Wenn dann tun wir
enable-migrations -EnableAutomaticMigrations
Es funktioniert, aber wenn wir folgen ihm mit:
Add-Migration InitialCreation
Es schafft eine Leere InitialCreation Migration und es erstellt die Datenbank mit den Tabellen, die meinem Modell entsprechen. Aber das tun wir können nicht die Skripte für das Erstellen der Datenbank zum ersten Mal. Ich verstehe nicht, was vor sich geht. Es scheint das erste Mal, dass es einige automatische Migration verwendet.
Warum können wir nicht enable-migrations
ohne -EnableAutomaticMigrations
?
aktualisieren
mit Steve Green Nach einem Gespräch, ich denke, es könnte nützlich sein Teil meines DbContext und Initializer
public class ApplicationDatabaseContext : DbContext
{
public ApplicationDatabaseContext()
: base("MyConnectionStringName")
{
Database.SetInitializer<ApplicationDatabaseContext>(new ApplicationDataInitializer());
if (!Database.Exists())
{
Database.Initialize(true);
}
}
Und mein DatabaseInitializer hinzuzufügen:
public class ApplicationDataInitializer : CreateDatabaseIfNotExists<ApplicationDatabaseContext>
{
protected override void Seed(ApplicationDatabaseContext context)
{
base.Seed(context);
CreateData(context);
}
private void CreateData(ApplicationDatabaseContext context)
{
//Add data here
context.SaveChanges();
}
}
Wir haben den Initiator CreateDatabaseIfNotExist. Ich bin neu bei EF und Migrationen, habe mir bei einigen Microsoft Tutorials den gesamten Ordner gelöscht, deshalb haben wir es gemacht. Dies ist auch die Anzahl der Orte, an denen Migrationen zurückgesetzt werden können. Wie legen Sie die MigrateDatabaseToLatestVersion fest, wenn Sie einen CreateDatabaseIfNotExist Initliazer verwenden? – Dzyann
Sie brauchen nicht beide. MigrateDatabaseToLatestVersion erstellt die Datenbank, wenn sie nicht existiert, solange Sie diese Baseline, die erste Migration, haben. Setzen Sie es in den statischen Konstruktor des Kontextes. –
Hallo Steve, ich habe meinen DbContext-Konstruktor und den Initialisierer meinem Beitrag hinzugefügt. Wir hatten die gleichen Dinge zuvor und hatten kein Problem, die EF Migrationen zurückzusetzen. Und jetzt geht es plötzlich nicht mehr. – Dzyann