Verwenden eines separaten Migrations ProjektsUsing a Separate Migrations Project

Möglicherweise möchten Sie die Migrationen in einem anderen Projekt als dem mit Ihrem speichern DbContext .You may want to store your migrations in a different project than the one containing your DbContext. Sie können diese Strategie auch verwenden, um mehrere Sätze von Migrationen beizubehalten, z. b. eine für die Entwicklung und eine andere für releaseaktualisierungen.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

Tipp

Das in diesem Artikel verwendete Beispiel finden Sie auf GitHub.You can view this article's sample on GitHub.

SchritteSteps

  1. Erstellen Sie eine neue Klassenbibliothek.Create a new class library.

  2. Fügen Sie einen Verweis auf das dbcontext-Projekt hinzu.Add a reference to your DbContext project.

  3. Verschieben Sie die Migrationen und die Modell Momentaufnahme-Dateien in die Klassenbibliothek.Move the migrations and model snapshot files to the class library.

    Tipp

    Wenn keine Migrationen vorhanden sind, generieren Sie eine im Projekt, das den dbcontext enthält, und verschieben Sie Sie dann.If you have no existing migrations, generate one in the project containing the DbContext then move it. Dies ist wichtig, denn wenn das Migrationsprojekt keine vorhandene Migration enthält, kann der Add-Migration Befehl dbcontext nicht finden.This is important because if the migrations project does not contain an existing migration, the Add-Migration command will be unable to find the DbContext.

  4. Konfigurieren Sie die Migrations Assembly:Configure the migrations assembly:

    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection"),
            x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Fügen Sie dem Start Projekt einen Verweis auf das Migrationsprojekt hinzu.Add a reference to your migrations project from the startup project.

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

    Wenn dadurch eine zirkuläre Abhängigkeit verursacht wird, können Sie stattdessen den basisausgabe Pfad des Migrations Projekts aktualisieren:If this causes a circular dependency, you can update the base output path of the migrations project instead:

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

Wenn Sie alles ordnungsgemäß durchgeführt haben, sollten Sie dem Projekt neue Migrationen hinzufügen können.If you did everything correctly, you should be able to add new migrations to the project.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations