2011-01-24 19 views
9

Estoy teniendo una gran frustración con los archivos DBML que no se actualizan cuando alterno mis procedimientos almacenados.Procedimientos LINQ y almacenados Problema de actualización de DBML

Esto es lo que sucede. Altero mi procedimiento almacenado. Luego elimino el procedimiento almacenado del archivo .DBML y lo vuelvo a agregar. Se actualiza correctamente en el archivo .DBML, pero el archivo .designer.cs no se actualiza. La única solución alternativa que he encontrado es eliminar el procedimiento almacenado, luego eliminar la tabla que devuelve el procedimiento almacenado, agregar la tabla y luego agregar el procedimiento almacenado (todo en el archivo .DBML). Y esto solo a veces hace el truco.

¿Alguien más ha tenido este problema? ¿Seguramente hay una manera más adecuada de actualizar archivos DBML en Visual Studio 2008?

Gracias de antemano

+0

El diseñador visual de DBML es una cosa de "una sola vez": no hay ninguna funcionalidad de actualización de ningún tipo. Puede investigar una herramienta de terceros como las Herramientas DBML de Huagati para resolver esto, o cambiar a Entidad Marco 4, que tiene un soporte mucho mejor para actualizar su modelo existente de la base de datos cuando la base de datos subyacente ha cambiado. –

+0

Sé que esto es antiguo, pero hoy lo encontré para saber si se esperaba el comportamiento (agregar la nueva clase de diseñador). ¿Por qué no cortar y pegar desde la clase recién creada a la clase anterior y luego eliminar la clase recién creada? Eso mantiene las cosas ordenadas con su control de versiones y le da la clase correcta. – Ron

Respuesta

13

No hay forma de que el archivo DBML se actualice a medida que cambia el SP.

Tengo una sugerencia para que se deshaga de él. Esto es lo que seguimos en nuestros proyectos.

Siempre que tenga una actualización en su SP si se trata de parámetros de entrada o salida. Edite el archivo dbml como archivo xml (puede usar abrir como xml en VS únicamente) y guarde el archivo dbml. Eso también actualizará automáticamente los cambios en el archivo designer.cs. De esta manera, no tiene que eliminar el SP de dbml y volver a agregarlo para obtener las actualizaciones. Aunque este es un proceso manual, pero realmente te ayuda mucho.

esta manera usted puede incluso modificar los nombres de entidad (para cumplir con su entidad convenciones de nomenclatura) para la salida que está recibiendo de SP como los nombres predeterminados son los mismos que el nombre SP.

+3

Nota: Con el fin de obtener Visual Studio para generar el archivo que _designer.cs_ ** ** obligada editar el archivo XML _dbml_ como desde dentro de Visual Studio (haga clic derecho en el Explorador de soluciones y seleccione _open Con ..._). Editarlo/guardarlo en un editor de texto separado no da como resultado la regeneración del archivo _designer.cs_. –

+0

He editado con editor de texto en VS 2012 con éxito también. –

1

1 Tenga en cuenta que SQL y VS es completamente 2 servicios separados. simplemente se conectan entre sí, no significa que se sincronicen entre sí.

2 En mi opinión DBML es algo así como ms-sql solamente. Utilizo para crear DB Factory operar completamente base en interfaces y devolver datos como DataTable ot DataSet. Este código podría usarse para todos los db estándar.

4

enter image description here una cosa más lo que hice fue abrir el explorador del servidor de la vista. allí enumerará las conexiones db. Allí, haga clic derecho en esa conexión particular que apunta a su base de datos y actualice. Si ha agregado algún nuevo procedimiento almacenado o si ha actualizado alguno, se actualizará automáticamente.

0

También en Entity Framework 6 esto es un problema. Elimine los elementos alterados en el archivo .edmx y "Actualizar el modelo desde la base de datos".

Cuestiones relacionadas