Uso de un proyecto de migraciones independientes

Es posible que quiera 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 un ejemplo de este artículo en GitHub.

Pasos

  1. Cree una nueva biblioteca de clases.

  2. Agregue una referencia al proyecto DbContext.

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

    Sugerencia

    Si no tiene migraciones existentes, genere una en el proyecto que contenga DbContext y muévala. 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 lo hizo correctamente, debería poder agregar nuevas migraciones al proyecto.

dotnet ef migrations add NewMigration --project WebApplication1.Migrations