Tengo algunos modelos bastante grandes que ayudo a actualizar y lo más importante que he notado sobre el comando "Actualizar el modelo del asistente" en EF v1 es que no elimina CUALQUIER COSA del CSDL. El SSDL puede ser 100% correcto (y en la mayoría de los casos). Entonces hay dos formas de manejar esto.
1) Modifique/script los cambios XML. 2) Realice los cambios manualmente en el diseñador.
He intentado mucho para que el método 1 funcione. No es fácil, pero básicamente la mejor pista que puedo darte es comparar el SSDL con la versión CSDL y te acercas mucho (si solo hablas de columnas).
Lo peor es cuando cambia el nombre de una tabla. Entonces, cada relación FK que se creó en esa tabla en el CSDL está esencialmente duplicada (porque un cambio de nombre es realmente un eliminar/crear, pero recuerde que el asistente no elimina nada en el CSDL :-))
Entonces, el consejo más fácil que tengo. Realice los cambios desde el asistente de actualización. Luego compile solo el proyecto .edmx (manteniendo abierto al diseñador). Una vez hecho esto, simplemente haga doble clic en cada mensaje de error y "resuelva el error".
La resolución del error depende del escenario. Si se trata de columnas duplicadas, haga clic con el botón derecho en el nombre de la columna incorrecta y haga clic en Eliminar. Si es un FK malo, haz clic derecho sobre él y bórralo.
Recuerdo a alguien en Codeplex que intenta hacer el asistente de actualización con plantillas T4 (lo que usan con .NET v4 ahora). Creo que es mucho más complicado de lo que parece. Intenté hacerlo, y cuando llegué a escenarios como 1 .. * * ... 1 multiplicidad, el xml y el código en el generador de t4 dieron mucho miedo. Entonces, en su lugar, recurrimos al método de "resolver errores".
Me acaba de pasar esta mañana. Estaba ligeramente enojado con mi compañero de trabajo. Sin embargo, no estoy seguro de que sea la mejor práctica, no me ayudó mucho. – Kobi
¿estás usando EF4? – ashraf
@ashraf, no. Creo que EF 3.5 viene incluido con VS2008 SP1 –