2016-06-01 3 views
0

Ich aktualisiere die Foren einer alten Website zur Open Source MVCForum. MVCForum verwendet das Code First Entity Framework, was, wie ich feststellen kann, die Integration in eine bestehende Datenbank erschwert (zumindest für einen Anfänger wie mich: /). Ich habe mit Entity Framework kurz von Grund auf gearbeitet, aber noch nie in einer bereits entworfenen Anwendung mit abgeschlossenen Modellen.Verwenden von Entity Framework mit einer vorhandenen Datenbank. Tisch-Löschung verhindern?

Gibt es eine Möglichkeit, die erforderlichen Tabellen eines Code First EF-Projekts in eine Datenbank zu integrieren, ohne alle Tabellen zu entfernen, die nicht direkt mit dem Projekt verknüpft sind? Es wäre ideal, alle Tabellen der Website in einer Datenbank und nicht nur in den Foren zu haben.

Gibt es auch eine Möglichkeit, ein Update auf eine Datenbank durch Entity Framework zu erzwingen? Nur eine rohe Gewalt "Überprüfen Sie, ob diese Tabellen existieren, wenn sie nicht erstellt werden." Ich bin auf das Problem des EF gestoßen, der denkt, dass meine Datenbank die notwendigen Tabellen hat (ich denke, dass das das Problem ist ...) und es nicht tut.

Entschuldigung, wenn das keinen Sinn ergibt. Ich kann EF nicht einmal genug verstehen, um richtig darüber zu fragen.

Dank

Antwort

0

Dieses Projekt sieht für Migrationen vorbereitete vor, so dass alles, was Sie tun müssen, ist, zeigen Sie Ihre Verbindungszeichenfolge, wo Sie möchten. Auf den ersten Sicht wird es die Datenbank erstellen, so jetzt Sie eine Baseline Migration erstellen möchten, die eine Momentaufnahme des vorhandenen Schema nimmt:

1) add-migration Initial -IgnoreChanges // tells EF tables exist 
2) update-database // Adds record to __MigrationHistory table 

Jetzt können Sie Ihre eigenen Änderungen und folgen Sie den normalen Code ersten Workflow machen:

1) Change schema 
2) add-migration foo 
3) update-database 
+0

Ich gebe das eine Chance. Ich werde zurückkommen und dies als Antwort markieren, wenn es funktioniert. Danke – CanBeNull

+0

Okay, es scheint zu funktionieren! Es hat automatisch die Tabellen generiert, aber die alten nicht weggeblasen. Beeindruckendes Zeug! Es treten einige andere Fehler auf, die jedoch anwendungsspezifisch sind. Markierung als Antwort. Vielen Dank! – CanBeNull

0

Ja, wenn Ihre DbSet Namen in Modell einzigartig sein werden (gegenüber DB Tabellennamen), EF __MigrationHistory Tabelle nur erstellen und neue Tabellen legen zum EF-Modell entsprechen. Dies ist das Standardverhalten mit CreateDatabaseIfNotExists Initialisierer.

In Ihrem Fall Sie sollten nicht verwenden:

  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

weil diese initialisers wird die Datenbank löschen.

Reverse Engineering

Optional können Sie einfach Ihre neue Tabellen in DB erstellen und dann EF-Code verwenden ersten gemeinsamen Weg. In diesem Fall ändert EF Ihre DB nicht. Beachten Sie, dass Sie in diesem Fall alle Änderungen in Ihrer Datenbank manuell vornehmen müssen.

Verwandte Themen