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

Vous souhaitez peut-être stocker vos migrations dans un autre assembly que celui qui contient 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 conserver plusieurs jeux de migrations, par exemple, une pour le développement et l’autre des 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.

    • Si vous n’avez pas ajouté, ajoutez l’un pour le projet de DbContext, puis déplacez-le.If you haven't added any, add one to the DbContext project then move it.
  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>..\MyStarupProject\bin\$(Configuration)\</OutputPath>
      </PropertyGroup>
      

Si vous avez tout faisiez correctement, vous devez être en mesure d’ajouter de nouvelles migrations 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