Die Einrichtung eines Entity Framework Code First-Datenbank auf SQL Server 2008

Habe ich erfolgreich meine erste Entity Framework Code first-Projekt mithilfe von SQL Server CE. Die Tabellen der Datenbank automatisch erstellt wurden, und alles war gut.

Ich änderte dann meine Verbindungszeichenfolge zu einer SQL Server-Datenbank, die ich geschaffen hatte, und erwartet, dass es zur automatischen Generierung der Tabellen. Es dauerte nicht und stattdessen beschwerte sich über die Tabellen nicht existieren.

Nach einigen Lesen fand ich, dass ich musste hinzufügen eine Initialisierung zu meinem App_Start Methode.

Habe ich versucht:

// Method 1
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFContext>());

Aber das hat nicht funktioniert auf den ersten, weil es nicht finden konnte, ein EdmMetaData Tabelle zu entdecken, wenn das Modell verändert hatte.

So, ich habe versucht, hinzufügen:

// Method 2
Database.SetInitializer(new CreateDatabaseIfNotExists<EFContext>());

Aber das hat nicht funktioniert, weil ich würde die Datenbank bereits erstellt, und wenn ich entfernt die Datenbank es immer noch nicht funktionieren, da die user-ich wurde in der Anmeldung als nicht über create database-Berechtigungen.

Ich es endlich ausprobiert:

// Method 3
Database.SetInitializer(new DropCreateDatabaseAlways<EFContext>());

Was auch geklappt hat, aber ich weiß nicht wirklich wollen, um die drop-db zu jeder Zeit. Also wenn es lief, und fügte hinzu, die EdmMetaData Tabelle ersetzt habe ich es mit der Methode 1 und das funktioniert nun gut.

Obwohl diese Methode funktioniert, es fühlt sich nicht so elegant, wie wenn ich mit SQL Server CE, und ich habe niemanden gefunden, was darauf hindeutet, dass Sie diese Methode verwenden.

So, ich bin etwas fehlt und gibt es einen einfacheren, eleganteren Weg, dies zu tun?

InformationsquelleAutor Richard Garside | 2011-12-31

Schreibe einen Kommentar