Delen via


Een afzonderlijk project voor migraties gebruiken

Mogelijk wilt u uw migraties opslaan in een ander project dan dat waarin uw DbContext is opgenomen. Dit wordt aanbevolen als uw project gebruikmaakt van een platformspecifiek projecttype, zoals WinUI, Xamarin, MAUI, Blazor of Azure Functions, of als het gericht is op een specifieke runtime-id (RID). U kunt deze strategie ook gebruiken om meerdere sets migraties te onderhouden, bijvoorbeeld een voor ontwikkeling en een andere voor upgrades voor release-naar-release.

Steps

  1. Maak een nieuwe klassebibliotheek.

  2. Voeg een verwijzing toe naar uw DbContext-project.

  3. Verplaats de migratie- en modelmomentopname-bestanden naar de klasse-bibliotheek.

    Tip

    Als u geen bestaande migraties hebt, genereert u er een in het project met dbContext en verplaatst u deze. Dit is belangrijk omdat als het migratieproject geen bestaande migratie bevat, de opdracht Add-Migration de DbContext niet kan vinden.

  4. Configureer de migratieassembly:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Voeg een verwijzing toe naar uw migratieproject vanuit het opstartproject .

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

    Als dit een kringafhankelijkheid veroorzaakt, kunt u in plaats daarvan het basisuitvoerpad van het migratieproject bijwerken:

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

Als u alles goed hebt gedaan, moet u nieuwe migraties aan het project kunnen toevoegen.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations

Tip

Als uw toepassing gebruikmaakt van afhankelijkheidsinjectie, kunt u overwegen om te implementeren IDesignTimeDbContextFactory<TContext> in uw migratieproject. Hierdoor kunnen de EF-hulpprogramma's uw DbContext maken zonder dat u het opstartproject hoeft uit te voeren. Voor meer informatie, zie ontwerptijdfabriek.