it-swarm.com.de

Wie kann ich Code-Migrationen deaktivieren?

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?

69
Stan Hargrove

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);
    }
82
Sarath Rachuri

Die vollständigste Antwort, die ich gefunden habe, ist folgende: 

  1. Löschen Sie den Migrations-Ordner in Ihrem Projekt. 
  2. Setzen Sie Database.SetInitializer<DatabaseContext>(null); in Ihrem DatabaseContext-Initialisierer. 
  3. Löschen Sie die Tabelle __MigrationHistory in Ihrer Datenbank. Bei EF6 + befindet sich die Tabelle unter Tables, bei früheren Versionen jedoch unter System Tables.
  4. Bauen und ausführen.
  5. Profitieren.
33
karlingen

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.

24
Eric J.

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.

21
Episodex

Ich habe dieses "Problem" gerade von gelöst

  1. Löschen der Tabelle "_MigrationHistory" aus der Datenbank.
  2. Ordner "Migrationen" aus dem Projekt löschen.
  3. Aktualisieren der EDMX-Datei.
  4. Reinigen Sie das Projekt und bauen Sie es neu auf.

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