2011-04-21 19 views
6

No deseo usar la asociación de clave foránea a CompanyType (miembro que contendrá la identificación de clave foránea) pero prefiero usar la propiedad de navegación. Así que eliminé el CompanyTypeId.eliminar la propiedad de clave foránea causa una excepción

me sale esta excepción que relaciona la relación entre la entidad y la empresa CompanyType:

Error 5: El elemento 'principal' en el espacio de nombres 'http://schemas.microsoft.com/ado/2008/09/edm' tiene contenido incompleta. Lista de posibles elementos esperados: 'PropertyRef' en el espacio de nombres 'http://schemas.microsoft.com/ado/2008/09/edm'.

enter image description here

¿Cómo puedo eliminar los identificadores de la POCOs sin conseguir la excepción?

+0

¿En qué orden trataste de eliminarlos? – Genzume

+0

@Tyler Ferraro: ¿Qué piensas? – Naor

+1

, por lo general, no puede eliminar CompanyTypeId hasta que elimine la restricción convirtiéndola en una clave externa para ID. Una vez que se elimina esa restricción, puede eliminar el CompanyTypeId de la empresa. – Genzume

Respuesta

8

Esta es la diferencia entre Foreign key association and Independent association. Ambas asociaciones usan propiedades de navegación, pero solo la asociación de clave externa también usa propiedades FK. Puede eliminarlos globalmente como se mencionó en @Robbie o puede cambiar el tipo manualmente para la relación seleccionada.

  • Seleccione la relación en la entidad diseñador marco
  • En las propiedades de eliminar restricciones de referencia
  • vaya a Ventana Mapeo y mapear la relación

Aquí está la captura de pantalla de una de mi solicitud de pruebas con relación uno a muchos entre Order y OrderLine entidades:

enter image description here

Como puede ver, no hay OrderId en la entidad OrderLine y las restricciones referenciales de la relación están vacías. También se especifica el mapeo de la relación.

PERO nunca se puede eliminar Id de CompanyType. Los Ids (PK) son obligatorios. Solo puedes cambiar su accesibilidad en sus propiedades.

+0

Muy buena explicación @Ladislav. +1 –

+0

¿Cómo puedo hacer Insertar (determinar el CompanyTypeId) si elimino el CompanyTypeId de la entidad de la compañía? – Naor

+0

@Noar: debe asignar la propiedad de navegación 'company.CompanyType = ...;' –

4

Cuando haya importado en su modelo de su base de datos se le preguntará si desea:

"Incluir columnas de clave externa en el modelo" necesita cambiar esto.

enter image description here

+0

Si eliminaré la restricción de la clave externa del modelo de datos de la entidad, ¿el do se sabrá para cargar las propiedades de navegación? – Naor

+0

Las propiedades de la entidad se seguirán creando, está en las columnas de FK que no serán :) –

+0

Rescatado de la deflexión de errores basada en la herencia de EF. Gracias. –

Cuestiones relacionadas