La mejor manera de actualizar las clases de LINQ a SQL después del cambio de esquema de la base de datos

StackOverflow https://stackoverflow.com/questions/40022

  •  09-06-2019
  •  | 
  •  

Pregunta

Estoy usando clases de LINQ to SQL en un proyecto donde el diseño de la base de datos aún está cambiando.

¿Existe una forma sencilla de sincronizar las clases con el esquema o necesito actualizar manualmente las clases si cambia el diseño de una tabla?

¿Fue útil?

Solución

Puede utilizar SQLMetal.exe para generar su archivo dbml o cs/vb.Utilice un script precompilado para iniciarlo y apuntar 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>

Otros consejos

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 al diseñador de diagrama LINQ2SQL/DBML en Visual Studio 2008, y al diseñador de marco de entidad ADO.NET en Visual Studio 2008 SP1.El complemento agrega nuevas opciones de menú para actualizar los diagramas de diseñador de Linq2sql con cambios en la base de datos, para cambiar el nombre de las clases y propiedades de Linq-to-SQL (DBML) y EF (EDMX) para usar convenciones de nombres .NET, y para agregar documentación/descripciones a LINQ -To SQL Clases generadas de las propiedades de la base de datos.

Screenshot of DBML Tools

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

Instrucciones:

  • Extrae una copia de la tabla modificada en el 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 (elimine primero los campos modificados)
  • Ahora borra la tabla de la que los copiaste.

Sé que es un poco 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 permanecerán intactos.Espero eso ayude.

Cuándo usar:

Por supuesto, es, como se dijo, para cambios pequeños, pero seguramente es mejor que reemplazar manualmente tablas con muchos enlaces, o cuando no desea que SQLMetal genere toda la estructura de su base de datos.Por ejemplo, cuando tienes una gran cantidad de tablas (p. ej.SAP), o cuando se utilizan tablas con enlaces cruzados de diferentes bases de datos.

DamienG ha escrito algunos plantillas t4 que puede reemplazar parte de lo que VS genera para usted.Estos se pueden volver a ejecutar cuando lo desee mediante una herramienta de línea de comandos.

Las plantillas T4 tienen la ventaja adicional de ser editables.Esto le permite modificar lo que se genera a su gusto.

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

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

Escribí una herramienta para realizar cambios en los scripts Dbml. http://code.google.com/p/linqtodbmlrunner/ y mi blog http://www.adversecondicionals.com

¿Qué tal modificar las Propiedades de la entidad/tabla dentro de la superficie de diseño 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 derecho en la entidad y seleccione Agregar > Propiedad.
  3. Complete los valores en la ventana Propiedades para la nueva columna.
  4. Construya su 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top