¿Pierde EF Code First Migration cuando trabaja en diferentes ramas de TFS?


Estamos usando TFS y tenemos diferentes ramas para nuestro Dev.

  1. En la rama A hicimos una migración para cambiar el tamaño de una columna

  2. En la rama B hicimos una migración para agregar una nueva tabla. Esta rama no sabe acerca de la rama Una modificación !!

  3. Ambas modificaciones se fusionan con la rama principal.

Cuando hago una base de datos de actualización, hace la migración 2 pero al final me dice que hay cambios pendientes. Si hago una Add-Migration, crea lo mismo que la 1ra migración (en la rama A).

No se puede actualizar la base de datos para que coincida con el modelo actual porque hay pendientes los cambios y la migración automática están deshabilitados. Escriba el modelo pendiente cambia a una migración basada en código o habilita la migración automática. Establecer DbMigrationsConfiguration.AutomaticMigrationsEnabled a true para habilitar automático migración. Puede usar el comando Add-Migration para escribir el pendiente cambios de modelo a migración basada en código.

¿Es porque falta algo en el contenido de la propiedad Target de IMigrationMetadata de mi última migración ya que no sabía nada de la 1ª ?

¿Es posible manejar migraciones en diferentes ramas TFS?

Author: abatishchev, 2012-04-16

2 answers

Un paso de migración EF contiene un archivo de metadatos, que tiene una firma del modelo que es el resultado del paso de migración. El problema al fusionar es que la firma de la migración realizada en la rama B no incluye el material realizado en la migración en la rama A. Mientras las migraciones estén en las ramas, esto es correcto. Cuando se fusiona se convierte en un error.

Para remediarlo, debe regenerar los metadatos de esta última migración con

add-migration MyMigrationName

Corriendo add-migration en un la migración existente sin el parámetro -force regenerará solo los metadatos.

Escribí un recorrido en profundidad de un escenario de fusión en la publicación Migraciones EF y un conflicto de fusión en mi blog.

 33
Author: Anders Abel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-01 06:50:40

Como una adición a la respuesta de Anders Abel y para aquellos de ustedes que están teniendo el problema al intentar regenerar los metadatos de las últimas migraciones causando que EF cree una migración separada con un 1 agregado a ella.

Debe incluir el sello de fecha/hora completo.

Por ejemplo

Si el nombre de archivo de su migración anterior es 201701011322_MakeChangesToPotatoTable

Entonces debe incluir el nombre completo correctamente en el " Add-Migration" comando.

I. E.

Add-Migration 201701011322_MakeChangesToPotatoTable
 0
Author: JARRRRG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 14:20:23