Verwenden eines separaten Migrationsprojekts

Möglicherweise möchten Sie Ihre Migrationen in einem anderen Projekt speichern als dem, das Ihre DbContext enthält. Sie können diese Strategie auch verwenden, um mehrere Gruppen von Migrationen zu verwalten, z. B. eine für die Entwicklung und eine andere für Release-zu-Release-Upgrades.

Tipp

Das in diesem Artikel verwendete Beispiel finden Sie auf GitHub.

Schritte

  1. Erstellen Sie eine neue Klassenbibliothek.

  2. Fügen Sie ihrem DbContext-Projekt einen Verweis hinzu.

  3. Verschieben Sie die Migrationen und die Momentaufnahmedateien des Modells in die Klassenbibliothek.

    Tipp

    Wenn Sie keine vorhandenen Migrationen haben, generieren Sie eine im Projekt, das den DbContext enthält, und verschieben Sie die Migration. Dies ist wichtig, da der Befehl „Add-Migration“ den DbContext nicht finden kann, wenn das Migrationsprojekt keine vorhandene Migration enthält.

  4. Konfigurieren der Migrationsassembly:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Fügen Sie einen Verweis auf Ihr Migrationsprojekt aus dem Start-Projekt hinzu.

    <ItemGroup>
      <ProjectReference Include="..\WebApplication1.Migrations\WebApplication1.Migrations.csproj" />
    </ItemGroup>
    

    Wenn dies zu einer Ringabhängigkeit führt, können Sie stattdessen den Basisausgabepfad des Migrationsprojekts aktualisieren:

    <PropertyGroup>
      <BaseOutputPath>..\WebApplication1\bin\</BaseOutputPath>
    </PropertyGroup>
    

Wenn Sie alles richtig ausgeführt haben, sollten Sie in der Lage sein, dem Projekt neue Migrationen hinzuzufügen.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations