99

He generado un Entity Framework Model (4.0) desde 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.Entity Framework - Agregar propiedad de navegación manualmente

Por ejemplo:

tengo una tabla llamada La gente que tiene las siguientes columnas: GenderID RaceID

hay mesas para tanto género y raza, pero no hay ninguna 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?

Respuesta

164

Sí, no es tan sencillo.

Esto es lo que hace:

1 - Haga clic derecho sobre el diseñador, Añadir ->Asociación

2 - Configuración de la asociación y cardinalidades (Personas * .. 1 Género, Personas * ..1 Race)

3 - Ir al navegador Modelo ->Asociaciones

4 - Haga clic derecho sobre sus asociaciones de reciente creación, haga clic en Propiedades

5 - Aquí es necesario fijar los criterios de valoración de las opciones de las teclas y la 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 - Asigna la propiedad de navegación a las tablas/campos relevantes.

7 - Valide su modelo, cruce los dedos.

Espero que esto ayude.

+18

+1 para guardar lo que queda de mi cabello. Agregaré el # 6 requiere cambiar la columna de clave foránea en la página de propiedades de la asociación, Configuración de restricción referencial. Pulse [...] para abrir el diálogo de restricción referencial y cambiar el campo ficticio que el diseñador conectó a la tabla secundaria en Propiedad dependiente. –

+7

También deberá ir a las propiedades de la tabla secundaria y eliminar el campo ficticio que el diseñador agregó (y que no se correlaciona con ningún campo real en la tabla secundaria). –

+1

En el caso de Ver, también asegúrese de que obtiene la definición de clave principal correcta (haga clic con el botón derecho en seleccionar campos relacionados, márquelos como EntityKey en las propiedades). De lo contrario, puede obtener 'La multiplicidad no es válida en la relación Role porque el rol dependiente se refiere a las propiedades clave' –

39

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

  1. Añadir una asociación a través de fondo del diseñador derecho menú contextual del botón
  2. Configure su Asociación (asegúrese de desactivar la creación de la clave externa)
  3. Haga clic derecho sobre la asociación y seleccione Propiedades
  4. Haga clic en la ... botón de restricción referencial
  5. Establecer la relación entre las claves dentro
  6. Verify (desde el menú contextual diseñador)
  7. ???
  8. beneficio!
+3

+1 Punto 4 me hizo hacer las cosas bien, se pasó por alto que con la respuesta RPM194. –

Cuestiones relacionadas