¿Cómo actualizo un archivo dbml de Linq a SQL?

¿Cómo actualizo un archivo .dbml de Linq a SQL?

Hay tres formas de mantener el modelo sincronizado.

  1. Elimine las tablas modificadas del diseñador y arrástrelas de nuevo a la superficie del diseñador desde Database Explorer. He descubierto que, para que esto funcione de manera confiable, debes:

    a. Actualice el esquema de la base de datos en el Explorador de la base de datos (haga clic con el botón derecho, actualice)
    segundo. Guarde el diseñador después de eliminar las tablas
    do. Guarde de nuevo después de arrastrar las tablas hacia atrás.

    Sin embargo, tenga en cuenta que si ha modificado alguna propiedad (por ejemplo, desactivando la propiedad hija de una asociación), esto obviamente perderá esas modificaciones, tendrá que volver a realizarlas.

  2. Use SQLMetal para regenerar el esquema de su base de datos. He visto una serie de publicaciones en el blog que muestran cómo guiar esto .

  3. Realice los cambios directamente en el panel Propiedades de DBML. Esto funciona para cambios simples, como permitir nulos en un campo.

El diseñador de DBML no está instalado de manera predeterminada en Visual Studio 2015 o Visual Studio 2017. Tendrá que cerrar VS, iniciar el instalador de VS y modificar su instalación. Las herramientas LINQ to SQL es la característica que debe instalar.

Para actualizar una tabla en su diagtwig .dbml con, por ejemplo, columnas agregadas, haga esto:

  1. Actualice su ventana de SQL Server Explorer.
  2. Arrastre la versión “nueva” de su tabla al diagtwig .dbml (informe1 en la imagen a continuación).

report1 es la nueva versión de la tabla

  1. Marque las columnas agregadas en la nueva versión de la tabla, presione Ctrl + C para copiar las columnas agregadas.

copiar las columnas agregadas

  1. Haga clic en la versión “anterior” de su tabla y presione Ctrl + V para pegar las columnas agregadas en la versión ya presente de la tabla.

pegue las columnas agregadas a la versión anterior de la tabla

También puede consultar el conjunto de plantillas de generación de código PLINQO , basadas en CodeSmith, que le permiten hacer muchas cosas prácticas para y con Linq-to-SQL:

  • generar un archivo por clase (en lugar de un archivo único y enorme)
  • actualiza tu modelo según sea necesario
  • muchas mas funciones

Visite el sitio PLINQO en http://www.plinqo.com y eche un vistazo a los videos introductorios.

La segunda herramienta que conozco son las herramientas Huagati DBML / EDMX , que permiten la actualización de archivos de mapeo DBML (Linq-to-SQL) y EDMX (Entity Framework), y más (como convenciones de nomenclatura, etc.).

Bagazo

Usamos una plantilla T4 escrita a medida que consulta dinámicamente el modelo information_schema para cada tabla en todos nuestros archivos .DBML, y luego sobrescribe partes del archivo .DBML con nueva información de esquema de la base de datos. Recomiendo implementar una solución como esta: me ha ahorrado montones de tiempo y, a diferencia de eliminar y volver a agregar sus tablas a su modelo, puede mantener sus asociaciones. Con esta solución, obtendrá errores de tiempo de comstackción cuando su esquema cambie. Sin embargo, querrá asegurarse de que está usando un sistema de control de versiones, porque diferir es realmente útil. Esta es una gran solución que funciona bien si está desarrollando con un primer enfoque de esquema DB. Por supuesto, no puedo compartir el código de mi compañía, por lo que está solo para escribir esto usted mismo. Pero si conoce Linq-to-XML y puede ir a la escuela en este proyecto , puede llegar a donde quiere estar.

Recomendaría usar el diseñador visual integrado en VS2008, ya que la actualización de dbml también actualiza el código que se genera para usted. Modificar el dbml fuera del diseñador visual resultaría en que el código subyacente no esté sincronizado.

Hay un matiz para actualizar las tablas y luego actualizar el DBML … Las relaciones de claves externas no se traen siempre de inmediato si se realizan cambios en las tablas existentes. El trabajo alrededor es hacer una comstackción del proyecto y luego volver a agregar las tablas. Informé esto a MS y se lo arregló para VS2010.

La pantalla DBML no muestra nuevas restricciones de clave externa


Tenga en cuenta que las instrucciones dadas en la respuesta principal no son claras. Para actualizar la tabla

  1. Abra la superficie de diseño dbml
  2. Seleccione todas las tablas con Right-> Click-> Select All o CTRL a
  3. CTRL x (Cortar)
  4. CTRL v (Pegar)
  5. Guarde y reconstruya la solución.

En el caso de una actualización de procedimiento almacenado, debe eliminarlo del archivo .dbml y volver a insertarlo. Pero si el procedimiento almacenado tiene dos rutas (por ejemplo: si algo; muestra algunas columnas; si no, muestra algunas otras columnas), asegúrate de que las dos rutas tengan los mismos alias de columnas. De lo contrario, solo existirán las primeras columnas de ruta.