À l’aide d’un projet distinctUsing a Separate Project

Vous souhaiterez peut-être stocker vos migrations dans un autre assembly que celui contenant votre DbContext.You may want to store your migrations in a different assembly than the one containing your DbContext. Vous pouvez également utiliser cette stratégie pour gérer plusieurs ensembles de migrations, par exemple, un pour le développement et un autre pour les mises à niveau de version à l’autre.You can also use this strategy to maintain multiple sets of migrations, for example, one for development and another for release-to-release upgrades.

Pour...To do this...

  1. Créer un nouveau projet de bibliothèque de classes.Create a new class library.

  2. Ajoutez une référence à votre assembly de DbContext.Add a reference to your DbContext assembly.

  3. Déplacer les migrations et les fichiers de capture instantanée de modèle vers la bibliothèque de classes.Move the migrations and model snapshot files to the class library.

    Conseil

    Si vous disposez d’aucun migrations, générer une dans le projet contenant le DbContext, puis déplacez-le.If you have no existing migrations, generate one in the project containing the DbContext then move it. Ceci est important, car si l’assembly de migrations ne contient pas d’une migration existante, la commande Add-Migration sera impossible de trouver la classe 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. Configurer l’assembly de migrations :Configure the migrations assembly:

    options.UseSqlServer(
        connectionString,
        x => x.MigrationsAssembly("MyApp.Migrations"));
    
  5. Ajoutez une référence à votre assembly de migrations à partir de l’assembly de démarrage.Add a reference to your migrations assembly from the startup assembly.

    • Si cela provoque une dépendance circulaire, mettez à jour le chemin de sortie de la bibliothèque de classes :If this causes a circular dependency, update the output path of the class library:

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

Si vous avez tout faisiez correctement, il se peut que vous devez être en mesure d’ajouter des migrations de nouveau au projet.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