0

Ich arbeite an einer ASP.NET 5-Anwendung, die Entity Framework 7 mit Migrationen verwendet, um die Microsoft Sql Server-Datenbank der Anwendung zu ändern.Entity Framework 7 Befehle Klärung - Migrationen hinzufügen vs. Datenbankaktualisierung?

Ich habe ein paar Probleme, wenn ich den Migrationsschritt erreiche, und ich würde gerne klären, was die Entity Framework-Befehle migrations add und database update tun.

Es ist mein Verständnis, dass

> dnx ef migrations add Initial

eine Datei im Namen Initial in einem Ordner namens Migrations enthält Code Endung C# erstellt, die Tabellen auf der Grundlage der Anwendung Modellklassen erstellen, und

> dnx ef database update

führt den Code aus, der w Ich füge diese Änderungen der Datenbank hinzu. Nach dem Befehl migrations add wurde die Datenbank jedoch bereits erstellt, und die Konsole gibt einen Fehler aus, wenn ich den Befehl database update ausführe und sage, dass die Tabellen bereits vorhanden sind.

Von dem, was ich auf verschiedenen Tutorials gelesen habe, scheint es migrations add sollte eigentlich nicht auf die Datenbank auswirken, und die Änderungen würden stattfinden, wenn Sie database update ausführen, aber es sieht nicht so aus.

Kann jemand erklären, was jeder dieser Schritte macht und wie sie zusammenpassen? Danke im Voraus!

+0

ef Migration hinzufügen Initial erstellen Sie keine Datenbank, nur die Migrationsdatei. Ich vermute, dass Sie zuvor eine Datenbank erstellt und ein Update darauf ausgeführt haben, dann löschen Sie die Migrationsdatei und erstellen sie neu, ohne die Datenbank zu löschen. – Tseng

+0

Ich hatte diese Probleme, wenn ich Modelle in einer vorhandenen Datenbank erstellte. Ich habe den Namen der Migration nur manuell in die Tabelle __efhistory eingefügt. Während EF7 sich zuerst auf Code konzentriert, ist die Realität, dass viele Entwicklungsprozesse zuerst Datenbank sind. – Tamayi

Antwort

1

dnx ef migrations add sollte die Datenbank nicht erstellen. Ich vermute, dass DbContext.Database.EnsureCreated() irgendwo in Ihrem Anwendungscode aufgerufen wird, was diesen Effekt ergibt.

+0

Ich hatte diese Zeile in meiner 'DbContext' Klasse. Ich habe es entfernt und die Befehle funktionieren wie sie sollten. Vielen Dank! – jmk22

Verwandte Themen