Ich habe eine Anwendung, die Entity Framework 6 (Datenbank zuerst) verwendet. Meine Datenbank existiert bereits, aber ich möchte meine Anwendung in einer neuen Umgebung ausführen können und den Code die Datenbank und Tabellen erstellen lassen, wenn sie nicht bereits vorhanden sind.Wie kann ich eine Datenbank und Tabellen zur Laufzeit mit Entity Framework 6 erstellen?
Wie kann dies in Entity Framework 6 erreicht werden? Ich habe ältere Beispiele gesehen, die DbContext.CreateDatabase()
verwenden, aber diese Methode ist in EF6 nicht verfügbar. Für was es wert ist, ist die Datenbank in SQL Azure.
EDIT: einige Leute haben vorgeschlagen, die CreateDatabaseIfNotExists-Initialisierungsstrategie, die angeblich der Standard ist. Leider bekomme ich einen Fehler, wenn ich versuche, die Anwendung in einer neuen Umgebung auszuführen, in der die Datenbank noch nicht erstellt wurde. Vielleicht liegt das daran, dass ich mit Sql Azure arbeite? Der Fehler wird behoben, wenn ich die Datenbank und die Tabellen manuell erstelle. Hier ist die Fehlermeldung:
Ausnahme geworfen: 'System.Data.SqlClient.SqlException' in System.Data.dll
Zusätzliche Informationen: Datenbank kann nicht geöffnet "MyExampleDatabase" von der Anmeldung angefordert. Die Anmeldung ist fehlgeschlagen.
Anmeldung fehlgeschlagen für Benutzer 'ExampleUser'.
Beachten Sie, dass die Ausnahme ein Authentifizierungsfehler zu sein scheint, aber das ist nicht der Fall. Ich habe überprüft, dass die Anmeldeinformationen und die Verbindungszeichenfolge gültig sind. Die Anwendung funktioniert gut und ist in der Lage, Aktualisierungen der Datenbank vorzunehmen, nachdem ich die Tabellen db & manuell erstellt habe. Aber ich möchte, dass die Anwendung die Datenbank und die Tabellen zur Laufzeit automatisch erstellen kann, wenn sie nicht bereits existieren.
Schauen Sie sich EF6 Code First & Migrationen – Alex
Research [Initialisierungsstrategien] (http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx). Der offensichtlichste Kandidat ist 'CreateDatabaseIfNotExists', was eigentlich das Standardverhalten ist. –
Hat ExampleUser die erforderlichen Rechte zum Erstellen einer Datenbank am gewünschten Speicherort? –