.net - registro - update multiple rows entity framework
Actualizar el esquema de la base de datos en Entity Framework (7)
Instalé VS SP1 y jugué con Entity Framework.
Creé un esquema a partir de una base de datos existente e intenté algunas operaciones básicas.
La mayoría salió bien, excepto la actualización del esquema de la base de datos.
Cambié la base de datos de todas las formas básicas:
- agregó una nueva mesa
- borró una mesa
- agregó una nueva columna a una tabla existente
- eliminó una columna de una tabla existente
- cambió el tipo de una columna existente
Los primeros tres fueron bien, pero el cambio de tipo y la eliminación de la columna no siguieron los cambios en la base de datos.
¿Hay alguna manera de hacer es trabajar del diseñador? ¿O no es compatible en este momento? No encontré ningún material relacionado todavía, pero sigo buscando.
Supongo que posiblemente no sucedan porque romperían la construcción del código existente, pero eso es solo una suposición de mi parte.
Aquí está mi lógica:
En primer lugar, se supone que EF es más de un mapeo de tabla 1: 1, por lo que es muy posible que solo porque está eliminando una columna de la tabla A no significa que para esa entidad no debería haber una propiedad Descripción. Puede asignar esa propiedad a otra tabla.
En segundo lugar, cambiar un tipo podría simplemente romper las construcciones. ese es el único razonamiento allí.
De las demos del diseñador que he visto, no es una herramienta perfecta. Es un producto de la versión 1.0, por lo que es probable que tenga algunos puntos de dolor. El tipo de cambio es uno de ellos, parece. Al observar el diseñador y la generación de código, calculé que se rompería en tiempo de compilación (no probable) o en tiempo de ejecución (cuando el modelo se ejecuta realmente).
Debe eliminar la columna usted mismo del diseñador o del archivo XML.
Descubrí que, en general, todavía hay bastantes errores con la funcionalidad ''Actualizar el modelo desde la base de datos''.
Las claves son lo más importante para mí: todavía tengo que realizar alguna modificación en una relación de clave externa o agregar una clave principal a una tabla y hacer que el actualizador funcione correctamente (dado que generará un error de compilación en la generación código) - pero para resolver el problema, es una simple cuestión de eliminar el modelo y volver a importar (solo toma un minuto) - esto es menos que ideal, obviamente, pero nunca he tenido un error de una importación ''nueva''.
Como se mencionó anteriormente, puede eliminar la columna del diseñador. En cuanto a cambiar el tipo de datos de la columna: simplemente actualice el modelo desde la base de datos, luego vaya a las asignaciones de la tabla y seleccione la columna que cambió en la base de datos. los valores a la derecha representan su modelo, curiosamente esto no se actualiza automáticamente, solo seleccione la columna a la derecha y vaya a propiedades y cambie el tipo de datos allí. Debería convertirse en un menú desplegable.
Aclamaciones.
Rubicundo
Construí una aplicación similar a la solicitada. Pero mi solución fue dura. Trataré de contar;
Tienes que crear tus propias clases de administración de bases de datos y estos objetos serán responsables de crear, actualizar el esquema de la base de datos (lo creé manualmente).
Vi un buen artículo y código fuente en el blog del equipo ADO.NET, luego también puedes descargar EDMTools desde este blog, de código abierto. Y también puede implementar rutinas de generación y actualización de modelos en su proyecto.
Finalmente, cuando haya cambiado su esquema, debe volver a crear y vincular su modelo y reconstruir su conjunto de datos durante el tiempo de ejecución. Pero debe saber lo más importante: debe vincular el ensamblaje de su modelo de datos a su proyecto con un acoplamiento flexible (consulte esta publicación )
De otra manera, debería esperar a la versión EF 4.0 (ahora CTP 1), anunciaron que proporcionarán crear, eliminar, actualizar funciones de DatabaseScript.
Buena cerradura
La forma en que estoy haciendo esto (y estoy haciendo todas las cosas que mencionas, además de cambiar el nombre de las columnas) es haciendo cambios en la base de datos y regenerando el código EF usando EF Code First.
No estoy manipulando las primeras clases de EF Code para lo bueno o lo malo (incluidas las columnas con nombres sin sentido para las relaciones) para facilitar el proceso.
Ningún diseñador o generador de esquemas ORM podrá realizar cambios en su base de datos de producción si tiene datos restringidos. Es por esto que siempre debe comenzar por verificar si sus cambios en el DB son factibles, probarlos en una base de datos de desarrollo y luego adaptar su código para reflejar los cambios.