que tengo una tabla de referencia con todo tipo de datos de valor de búsqueda controladas por género, tipo de dirección, tipo de contacto, etc. Muchas tablas tienen varias claves externas a esta tabla de referenciamúltiples claves ajenas a la misma mesa
también tienen tablas de asociación de muchos a muchos que tienen dos claves externas a la misma tabla. Desafortunadamente, cuando estas tablas se extraen en un modelo de Linq y se genera el DBML, SQLMetal no mira los nombres de las columnas de clave externa, o los nombres de las restricciones, sino solo en la tabla de destino. Así que termino con miembros llamados Reference1, Reference2, ... no muy amigables con el mantenimiento. Ejemplo:
<Association Name="tb_reference_tb_account" Member="tb_reference" <======
ThisKey="shipping_preference_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
<Association Name="tb_reference_tb_account1" Member="tb_reference1" <======
ThisKey="status_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
puedo entrar en el DBML y cambiar manualmente los nombres de los miembros, por supuesto, pero esto significaría ya no puedo ida y vuelta mi esquema de base de datos. Esta no es una opción en la etapa actual del modelo, que aún está evolucionando. No es deseable dividir la tabla de referencia en n tablas individuales.
Probablemente pueda escribir un script que se ejecute contra el XML después de cada generación y reemplaza el nombre del miembro con algo derivado de ThisKey (ya que sigo una convención de nomenclatura para este tipo de claves). ¿Alguien ha encontrado una mejor solución a este problema?
Esto parece relevante: http://stackoverflow.com/questions/3736003/sqlmetal-multiple-foreign-keys-pointing-to-one-table-issue – DenNukem