Pregunta La mejor forma de actualizar las clases de LINQ a SQL después de cambiar el esquema de la base de datos


Estoy usando clases de LINQ a SQL en un proyecto donde el diseño de la base de datos todavía está en un poco de flujo.

¿Hay una manera fácil de sincronizar las clases con el esquema, o necesito actualizar las clases manualmente si un diseño de tabla cambia?


74
2017-09-02 16:54


origen


Respuestas:


Puede usar SQLMetal.exe para generar su archivo dbml y / o cs / vb. Utilice un script precompilado para iniciarlo y diríjase al directorio al que pertenece su proyecto de contexto de datos.

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe 
  /server:<SERVER> 
  /database:<database> 
  /code:"path\Solution\DataContextProject\dbContext.cs" 
  /language:csharp 
  /namespace:<your namespace>

63
2017-09-02 16:58



No lo he probado yo mismo, pero Herramientas Huagati DBML / EDMX es recomendado por otras personas.

Huagati DBML / EDMX Tools es un complemento   para Visual Studio que agrega   funcionalidad para el Linq2SQL / DBML   diseñador de diagramas en Visual Studio   2008, y a la Entidad ADO.NET   Diseñador de frameworks en Visual Studio   2008 SP1. El complemento agrega un nuevo menú   opciones para actualizar el diseñador Linq2SQL   diagramas con cambios en la base de datos, para   renombrar Linq-to-SQL (DBML) y EF   (EDMX) clases y propiedades para usar   .net convenciones de nomenclatura, y para   agregar documentación / descripciones a   Clases generadas de Linq a SQL de   propiedades de la base de datos

Screenshot of DBML Tools


17
2017-09-02 16:59



Aquí hay una solución fácil sin ningún software adicional, que solo funciona para cambios simples (como campos agregados, pocas tablas, etc.).

Instrucciones:

  • Tira de una copia de la tabla modificada al diseñador (se eliminará más adelante)
  • Ahora seleccione todos los campos nuevos (o modificados) y (right-click ->) copy
  • En su tabla original, haga clic derecho y insert ellos (borre los campos cambiados primero)
  • Ahora borre la tabla desde la que los copió

Sé que es algo obvio, pero de alguna manera no intuitivo, y me ayudó mucho, ya que se copiarán todos los atributos y tipos correctos, y todos los enlaces se mantendrán intactos. Espero eso ayude.

Cuándo usar:

Por supuesto, como se dijo, para pequeños cambios, pero seguramente es mejor que reemplazar manualmente tablas con muchos enlaces, o cuando no quiere que SQLMetal genere toda su estructura de base de datos. Por ejemplo, cuando tiene una gran cantidad de tablas (por ejemplo, SAP) o cuando usa tablas entrecruzadas de diferentes bases de datos.


8
2018-02-03 15:51



DamienG ha escrito algunos plantillas t4 que puede reemplazar algo de lo que VS genera para usted. Estos se pueden volver a ejecutar siempre que lo desee a través de una herramienta de línea de comandos.

Las plantillas T4 tienen el beneficio adicional de ser editables. Esto le permite ajustar lo que se genera para el contenido de su corazón.


5
2017-10-21 12:56



Creo que Jeff se quejó de esto recientemente. Una técnica común es arrastrar todos los objetos al diseñador de nuevo ...

¡Espero que alguien más responda con un mejor enfoque!


4
2017-09-02 16:56



Escribí una herramienta para hacer cambios de guiones en los scripts de Dbml. http://code.google.com/p/linqtodbmlrunner/ y mi blog http://www.adverseconditionals.com


1
2017-11-28 18:21



¿Qué hay de la modificación de las Propiedades de la entidad / tabla dentro de la superficie de diseño de DataContext dentro de Visual Studio?

Por ejemplo, si agregué una columna a una tabla de SQL Server:

  1. Abra el archivo * .dbml.
  2. Haga clic con el botón derecho en la entidad y seleccione Agregar> Propiedad.
  3. Complete los valores en la ventana de Propiedades para la nueva columna.
  4. Construye tu solución.

Las clases de modelo generadas automáticamente deben reflejar la nueva columna que se agregó.

enter image description here

enter image description here


0
2018-06-26 22:32