una tipo remove ningún migraciones migracion habilitar framework ensamblado encontrado eliminar configuración automaticas entity-framework ef-code-first code-first entity-framework-5 ef-migrations

entity framework - tipo - Migraciones EF: RenameColumn en las migraciones automáticas?



no se ha encontrado ningún tipo de configuración de migraciones en el ensamblado (2)

Las migraciones no pueden detectar automáticamente el cambio de nombre de una propiedad y columna. La migración de andamiaje contendrá un Drop / Create que deberá cambiar a Rename.

Si solo cambia el nombre de la columna (agregando una anotación de [Columna] a la propiedad) podemos detectar eso como un cambio de nombre porque podemos coincidir con el nombre de la propiedad a la que se asigna la columna.

Consideramos la posibilidad de agregar un cambio de –Renombres al comando Agregar-Migración, pero al final decidimos que editar el código generado era más fácil que calcular la sintaxis para proporcionar los nombres en la línea de comandos.

~ Rowan

Si cambia el nombre de una propiedad, el IDE de Visual Studio es lo suficientemente inteligente como para ayudarlo a refactorizar el cambio de nombre de esa propiedad en todo su código. Si ese cambio de nombre está en un modelo utilizado en EF Migrations, y ejecuta una migración automática estándar como:

update-database -f

Obtendrás esto:

AddColumn("NewName"... DropColumn("OldName"...

No es lo que querías. Obviamente, ejecutar Add-Migration en este punto le permitirá ingresar y cambiar manualmente estas 2 llamadas a una sola llamada a RenameColumn, pero ¿hay alguna forma de hacer que las Migraciones automáticas lo hagan automáticamente? ¿Alguna aproximación al cambio de nombre de propiedad que no estoy haciendo bien, quizás?

Estoy utilizando EF 5.0 en VS2012, pero este comportamiento aparece también en EF 4.3.1 y VS2010.


Mi opinión: EF no tiene idea de que ha cambiado el nombre de la columna existente. Refactorizar es un cambio en el tiempo de diseño sin información persistente sobre el cambio, de modo que cuando ejecuta migraciones, EF simplemente no sabe cómo diferir entre el cambio de nombre y la eliminación / adición real de una nueva columna.