Usar una migración independiente Project

Es posible que desee almacenar las migraciones en un proyecto diferente al que contiene DbContext . También puede usar esta estrategia para mantener varios conjuntos de migraciones, por ejemplo, uno para el desarrollo y otro para las actualizaciones de versión a versión.

Sugerencia

Puede ver en GitHub un ejemplo de este artículo.

Pasos

  1. Cree una nueva biblioteca de clases.

  2. Agregue una referencia al proyecto de DbContext.

  3. Mueva las migraciones y los archivos de instantánea del modelo a la biblioteca de clases.

    Sugerencia

    Si no tiene ninguna migración existente, genere una en el proyecto que contiene DbContext y muévela. Esto es importante porque si el proyecto de migraciones no contiene una migración existente, el comando Add-Migration no podrá encontrar DbContext.

  4. Configure el ensamblado de migraciones:

    services.AddDbContext<ApplicationDbContext>(
        options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"),
                x => x.MigrationsAssembly("WebApplication1.Migrations")));
    
  5. Agregue una referencia al proyecto de migraciones desde el proyecto de inicio.

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

    Si esto provoca una dependencia circular, puede actualizar la ruta de acceso de salida base del proyecto de migraciones en su lugar:

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

Si ha hecho todo correctamente, debería poder agregar nuevas migraciones al proyecto.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations