Ich habe ein Code-First-Entity-Modell in EF5. Ich möchte die Datenbankänderungen jedoch manuell verwalten - ich möchte nicht, dass EF meine vorhandene Datenbank und alle ihre Daten ändert. Wenn ich jedoch parallele Änderungen am EF-Mapping und in der Datenbank vornehme, lehnt EF es ab, ordnungsgemäß zu arbeiten, und sagt mir, dass ich zunächst Code einsetzen muss. Wie schalte ich das aus?
setzen Sie den Database.SetInitializer auf null.
public class DatabaseContext: DbContext
{
//the base accepts the name of the connection string provided in the web.config as a parameter
public DatabaseContext()
: base("DatabaseContext")
{
//disable initializer
Database.SetInitializer<DatabaseContext>(null);
}
Die vollständigste Antwort, die ich gefunden habe, ist folgende:
Migrations
-Ordner in Ihrem Projekt. Database.SetInitializer<DatabaseContext>(null);
in Ihrem DatabaseContext-Initialisierer. __MigrationHistory
in Ihrer Datenbank. Bei EF6 + befindet sich die Tabelle unter Tables
, bei früheren Versionen jedoch unter System Tables
.Wenn Sie Migrationen vollständig deaktivieren möchten:
https://stackoverflow.com/a/9709407/141172
Ich fand es jedoch besser, Code-First-Migrationen aktiviert zu lassen, aber mit der Option -Script
lässt EF ein DB-Änderungsskript für mich erstellen, das ich manuell auf jede Datenbank (Entwicklung, QA, Produktion) anwenden kann:
Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject
Auf diese Weise erstellt EF das Änderungsskript für mich, und ich habe immer noch die vollständige Kontrolle über die vorgenommenen Änderungen. Ich versioniere die Änderungsskripten wie jeder andere Quellcode.
Wenn Sie Migrationen bereits verwendet haben, hilft das Ändern nur des Initializers nicht. Sie müssen zu Management Studio gehen, Ihre Datenbanktabellen öffnen, den Ordner System Tables
öffnen und die dort befindliche __MigrationHistory
-Tabelle entfernen (bei EF6 und höher befindet sich diese direkt unter Tables
). Dadurch werden Migrationen endgültig deaktiviert.
Ich habe dieses "Problem" gerade von gelöst
Meine Umgebung ist
1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0