Saltar al contenido

Entity Framework Core: ¿Es seguro eliminar Migration.Designer.cs si nunca revertiremos una migración?

El paso a paso o código que verás en este post es la solución más fácil y efectiva que hallamos a esta duda o problema.

Solución:

¿Se usan las instantáneas del modelo para algo más que no sea la reversión de la migración?

Sí. Hay algunos casos extremos donde es necesario. En SQL Server, esos casos son:

  • AlterColumn cuando se reduce la columna o se cambia la expresión calculada y es necesario reconstruir los índices
  • CreateIndex en una tabla optimizada para memoria cuando el índice es único y hace referencia a columnas anulables

Por lo tanto, la mayoría de las veces es seguro eliminarlo, pero pruebe que sus migraciones aún funcionan después de hacerlo.

Tengo el mismo problema en mi proyecto actual. Más de 400 migraciones y 6 millones de líneas de código dentro de .Designer. Así es como logré resolver este problema:

ProyectoMigración.csproj

  
     ...
     $(DefaultItemExcludes);Migrations***.Designer.cs
  

De esta manera, no necesita restablecer la migración ni eliminar los archivos .Designer.

Editar: Esta es una solución temporal, deberá restablecer sus migraciones algún día.

Este es un refinamiento del enfoque de Jaime Yule.

En desarrollo, quiero poder probar mi migración actual y ejecutar migraciones que lleguen a mi sucursal al fusionar otras sucursales. Por lo tanto, en lugar de excluir todos los archivos del diseñador, mantengo los más recientes así:


  $([System.DateTime]::Now.Year)
  $([System.DateTime]::Now.Month)
  $(DefaultItemExcludes);Migrations*.Designer.cs



  

Por supuesto, para ser totalmente a prueba de balas, también habría que incluir el mes anterior. Como esto:


  $([System.DateTime]::Now.Month)
  $([System.DateTime]::Now.Year)
  $([System.DateTime]::Now.AddMonths(-1).Month)
  $([System.DateTime]::Now.AddMonths(-1).Year)
  $(DefaultItemExcludes);Migrations*.Designer.cs



  
  

Y por último pero no menos importante, hemos decidido omitir el '$(Configuration)'=='DEBUG' condición ya que solo estamos avanzando en la producción y para el desarrollo usamos EnsureCreated. Por lo tanto, no es necesario mantener el historial de todas las migraciones.

valoraciones y reseñas

Si te gustó nuestro trabajo, tienes la habilidad dejar un post acerca de qué te ha impresionado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *