Entity Framework – Agregar manualmente la propiedad de navegación

Genere un Modelo de Entidad Marco (4.0) de mi base de datos. No diseñé la base de datos y no tengo ningún control sobre el esquema, pero hay algunas tablas que no tienen restricciones de clave externa definidas, pero hay una relación implícita definida.

Por ejemplo:

Tengo una tabla llamada People que tiene las siguientes columnas: GenderID RaceID

Hay tablas para ambos Género y Raza, pero no hay una clave externa en la tabla Personas.

Cuando importé el modelo, no agregué Propiedades de navegación para estas relaciones. Traté de agregarlo manualmente pero desde Role y To Role están deshabilitados. No estoy seguro de cómo agregar la relación yo mismo. ¿Cómo hago esto?

Sí, no es tan sencillo.

Esto es lo que haces:

1 – Haga clic derecho sobre el diseñador, Agregar -> Asociación

2 – Configurar la asociación y cardinalidades (Personas * .. 1 Género, Gente * .. 1 Carrera)

3 – Ir al buscador de modelos -> Asociaciones

4 – Haga clic con el botón derecho en sus asociaciones recién creadas, haga clic en Propiedades

5 – Aquí necesita configurar los puntos finales para las opciones de clave y cascada. Asegúrese de obtener los puntos finales correctos. También puede configurar una restricción referencial aquí para su propiedad de navegación implícita.

6 – Asigne la propiedad de navegación a las tablas / campos relevantes.

7 – Valide su modelo, cruce los dedos.

Espero que esto ayude.

Me encontré con esta publicación de blog que propone la siguiente solución, que funcionó muy bien para mí (lamentablemente no pude hacer que RPM1984 funcionara en mi situación).

  1. Agregar una asociación a través del fondo del diseñador haga clic derecho en el menú contextual
  2. Configure su Asociación (asegúrese de desmarcar la creación de la clave externa)
  3. Haga clic derecho en la asociación y seleccione Propiedades
  4. Haga clic en el botón ... para Restricción referencial
  5. Configurar la relación entre las claves dentro de
  6. Verificar (desde el menú contextual del diseñador)
  7. ???
  8. ¡Lucro!