Pregunta

El nuevo diseño para una gran base de datos en nuestra empresa hace un amplio uso de las claves primarias compuestas en la base de datos.

El olvido de impactos en el rendimiento, será esta causa dificultades al trabajar con este db en Entity Framework 4.0? La estructura de base de datos es poco probable que cambie y no estoy mirando para el debate "filosófica" pero ¿cuáles son los efectos prácticos?

Según Jeremy Miller , 'clave múltiple realizar cualquier tipo de objeto / de mapeo relacional y persistencia en general más difícil'. pero que en realidad no dijo por qué. ¿Es esta la forma en relavent a Entity Framework 4.0 se encarga de llaves?

¿Fue útil?

Solución

No, EF4 soporta claves compuestas bien.

El problema es una tabla con una clave sustituta y claves compuestas. Sólo se puede establecer una clave única para cada modelo; esa llave puede tener múltiples campos, pero sólo puede tener un punto de vista del diseñador. No está seguro acerca de cómo modificar manualmente xml o código sólo mapeo.

Se puede establecer un campo como una identidad y no una clave si necesita una clave compuesta y sustituto en la misma mesa. El campo de identidad (ID) no será utilizada por el ObjectContext o ObjectStateTracker pero se incrementará y será consultable muy bien sin embargo.

Otros consejos

He tenido problemas con EF4 y claves compuestas. No es compatible con columnas que se utilizan como componentes en más de una clave en una tabla de unión.

Vea mi pregunta anterior Mapeo compuestos claves externas en una relación muchos-muchos relación en Entity Framework para más detalles. Las tuercas de esto es que cuando se tiene una tabla de unión (que describe una relación de muchos a muchos), donde ambas de las relaciones utilice una clave común, obtendrá un error como

  

Error 3021: Problema en el mapeo   fragmentos ...: Cada una de las siguientes   columnas en PageView tabla se asignan a   múltiples propiedades secundarios conceptuales:   PageView.Version se asigna a   (PageView_Association.View.Version,   PageView_Association.Page.Version)

La única manera de evitarlo era duplicar la columna que frustra el propósito de tener que existe en absoluto.

Buena suerte!

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