2009-02-23 9 views
7

Esto parece ser un caso común, pero por alguna razón, estoy frustrado por el débil editor de EF.¿Cómo puedo agregar manualmente una asociación compuesta en el marco de la entidad?

Tengo dos tablas, así:

Table1 
(
Column1 int, PK 
Column2 int, PK 
) 

Table2 
(
Column1 int, PK, FK 
Column2 int, PK, FK 
Column3 int, PK 
) 

Ahora, la base de datos (fuera de nuestro control) no tiene restricciones de clave externa. En este ejemplo, se supone que Table2 tiene una restricción de clave externa que hace referencia a Table1 en (Columna1, Columna2). En otras palabras, las dos primeras columnas de la Tabla 2 hacen referencia a la clave primaria de la Tabla1. Este es un problema cotidiano en cualquier base de datos ordinaria.

En otros marcos, como LLBLGenPro, podemos agregar manualmente la relación de una manera muy trivial. Sin embargo, no podemos encontrar la manera de lograr esto en el editor de EF. Esta ventana de "Mapeo de detalles" es horrible y no intuitiva. Hasta ahora, hemos logrado seleccionar las diversas tablas en la asignación, pero siempre parece querer asociar en todas las columnas.

¿Alguna idea o referencia?

+0

¿Alguna vez se encuentra una respuesta a éste? Estoy en la misma situación y la solución de Craig tomaría una eternidad y realmente nos impediría usar EF. – Vaccano

Respuesta

1
  1. Crea tablas "temporales" con las mismas columnas pero FK adecuadas. Utilice una copia de seguridad del DB si no puede modificar el "real". No se moleste en mapear las tablas sin FK. Puede ser más fácil si usa un nuevo modelo, ya que eliminarlo del diseñador no elimina las asignaciones de la tienda.
  2. Localícelos con el asistente.
  3. Abra la EDMX como XML (no en el diseñador)
  4. Buscar y reemplazar los nombres de tabla, utilizando las tablas que realmente desea asignar.
  5. Suelta las tablas "temporales".

Consejo general: Edite EDMX manualmente cuando haga cosas no estándar. No FKs = no estándar. El diseñador de GUI solo maneja ciertos casos.

+1

Gracias por su respuesta. Esto suena extremadamente cojoNo es solo el escenario de FK lo que va a ensuciar esto. Hay otras instancias de asignaciones personalizadas que a las personas les gusta agregar a las capas ORM. Esto no se ve bien para EF. –

+0

Es lo que es, pero la mayoría de los ORM requieren editar XML en algún momento, en mi experiencia. –

7

Suponiendo que tiene las dos entidades en su lugar.

  1. Haga clic con el botón derecho en el encabezado de la entidad Table1 y seleccione agregar asociación.
  2. Seleccione la Tabla 2 en el extremo derecho. (Establezca cualquier otra propiedad en este asistente)
  3. Seleccione la asociación recién creada y edite la asignación. (Ya debe estar seleccionado)
  4. En la ventana de detalles de asignación, seleccione Tabla 2

Esa debe ser la misma.

0
  1. Haga clic con el botón derecho en el encabezado de la entidad Table1 y seleccione agregar asociación.
  2. Seleccione la Tabla 2 en el extremo derecho. (Establecer cualquier otra propiedad de este asistente)
  3. doble clic la asociación recién creada y establecer las propiedades
Cuestiones relacionadas