2011-02-15 30 views
6

Estoy importando una base de datos en el marco de la entidad y estoy teniendo problemas con una relación de muchos-a-muchos que tiene este aspecto: Relaciones de muchos a muchos en Entity Framework donde join table tiene más de dos campos?

Mi opinión es que si la "tabla de unión" (el del medio) contiene solo dos campos (las claves foráneas), entonces EF eliminará automáticamente la tabla central y creará una relación de muchos a muchos. Lamentablemente, no tengo control sobre el esquema de la base de datos, ¿alguien sabe si hay una forma de replicar ese comportamiento manualmente?

Para el registro, no hay ningún propósito detrás de ese campo Id en Employee_Employee_Type, está mal diseñado.

+1

Puede intentar eliminando Id de la tabla de asociación en su sandbox, actualizar el diagrama de la base de datos y restaurar Id. No estoy seguro de si funcionará correctamente, pero vale la pena intentarlo. – LukLed

+0

Estoy de acuerdo con LukLed – Divi

+0

Probablemente una solución viable, pero un gran dolor si necesito regenerarme de DB más adelante. –

Respuesta

8

Según las recetas de Entity Framework 4, página 554, así es como lo harías (no es bonito).

Básicamente, desea crear una Vista de la tabla de asignación Employee_Employee_type, pero sin la columna adicional, luego asóciela manualmente a las otras dos tablas. Debajo hay fotos de las páginas relevantes. Creo que (¡y espero!) Esto está cubierto por las leyes de copyright académicas de libre uso ...

El libro es fantástico, por cierto, así que recomiendo comprarlo. Espero que eso me acercará al autor si sucede esto.

enter image description here

enter image description here

+0

Gracias, parece que es la mejor solución, a pesar de que es bastante fea. Mi jefe realmente eligió ese libro para mí, pero otro desarrollador lo está leyendo en este momento. –

2

sí que es probablemente el mejor enfoque para darle la experiencia más limpia en la consulta y para la inserción y actualización siempre se puede utilizar la tabla de enlaces. Finalmente, no mencionará cuándo, EF admitirá propiedades de navegación con carga útil. Me alegra que a la gente le guste el trabajo. Honestamente tomó 1 año para escribir el libro.

Cuestiones relacionadas