Verwenden eines separaten ProjektsUsing a Separate Project

Empfiehlt, speichern Ihre Migrationen in einer anderen Assembly als die mit Ihrer DbContext.You may want to store your migrations in a different assembly than the one containing your DbContext. Sie können auch diese Strategie, um mehrere Sätze von Migrationen zu verwalten, z. B., eine für die Entwicklung und eine andere Version-zu-Release-Upgrades verwenden.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

AufgabeTo do this...

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

  2. Fügen Sie einen Verweis auf die "DbContext"-Assembly hinzu.Add a reference to your DbContext assembly.

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

    Tipp

    Wenn Sie keine vorhandenen Migrationen haben, generieren Sie, in dem die "DbContext", und verschieben Sie es.If you have no existing migrations, generate one in the project containing the DbContext then move it. Dies ist wichtig, denn wenn die Assembly Migrationen nicht mit eine Migration von vorhandene enthält, der Befehl Add-Migration wurde nicht gefunden "DbContext".This is important because if the migrations assembly does not contain an existing migration, the Add-Migration command will be unable to find the DbContext.

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

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. Fügen Sie einen Verweis auf die Assembly für die Migration aus der Startassembly hinzu.Add a reference to your migrations assembly from the startup assembly.

    • Wenn dies bewirkt, eine ringabhängigkeit dass, aktualisieren Sie den Ausgabepfad der Klassenbibliothek:If this causes a circular dependency, update the output path of the class library:

      <PropertyGroup>
        <OutputPath>..\MyStartupProject\bin\$(Configuration)\</OutputPath>
      </PropertyGroup>
      

Wenn Sie alles richtig gemacht haben, sollten Sie neue Migrationen zum Projekt hinzufügen können.If you did everything correctly, you should be able to add new migrations to the project.

Add-Migration NewMigration -Project MyApp.Migrations
dotnet ef migrations add NewMigration --project MyApp.Migrations