Partage via


Utilisation d’un projet de migration distinct

Vous souhaitez peut-être stocker vos migrations dans un projet différent de celui contenant votre DbContext. Vous pouvez également utiliser cette stratégie pour gérer plusieurs ensembles de migrations, par exemple, l’un pour le développement et un autre pour les mises à niveau de version à version.

Conseil

Vous pouvez afficher cet exemple sur GitHub.

Étapes

  1. Créer un nouveau projet de bibliothèque de classes.

  2. Ajoutez une référence à votre projet DbContext.

  3. Déplacez les migrations et les fichiers de captures instantanées de modèles vers la bibliothèque de classes.

    Conseil

    Si vous n’avez pas de migrations, générez-en une dans le projet contenant le DbContext, puis déplacez-la. C’est important, car si le projet de migration ne contient pas de migration existante, la commande Add-Migration ne peut pas trouver le DbContext.

  4. Configurez l’assembly de migrations :

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Ajoutez une référence à votre projet de migration à partir du projet de démarrage.

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

    Si cela provoque une dépendance circulaire, vous pouvez mettre à jour le chemin de sortie de base du projet de migration à la place :

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

si vous avez fait tout correctement, vous devez être en mesure d’ajouter de nouvelles migrations au projet.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations