9

He estado teniendo problemas anteriores con respecto a la herencia de clase y la estructuración de una base de datos al respecto y el uso de la estructura de la entidad sin éxito. Así que he intentado crear las entidades dentro de Visual Studio y ver qué tablas de base de datos crea automáticamente.ADO.Net EF: ¿cómo definir la relación de clave foránea en el primer enfoque del modelo?

Tengo un Entity MediaItem que es abstracto y el juego es heredero de esto. El juego tiene una consola (Int) que corresponde a ConsoleID. Sin embargo, cuando genero la base de datos obtengo una columna adicional no deseada (ConsoleTypes_ConsoleID) dentro de la tabla MediaItems_Game. ¿Por qué es esto y cómo puedo evitar que esto suceda? Gracias.

enter image description here

Respuesta

25

En primer lugar su modelo es probablemente equivocado. ConsoleType y Game no está en una relación uno-a-uno (a menos que tenga un solo juego para cada tipo de consola). Supongo que 1 consola puede tener múltiples juegos. Entonces debería ser de uno a muchos. En realidad, el juego se puede lanzar en múltiples plataformas, por lo que debe ser de muchos a muchos.

Tiene columna no utilizada porque su relación entre ConsoleType y Game no sabe que debe usar la propiedad Console como clave externa. Esto sucede si usa una asociación independiente. Las asociaciones independientes se utilizan de manera predeterminada cuando las dibuja de una entidad a otra entidad en el Diseñador de entidades. Debe usar asociación de clave externa.

de inicio con esta configuración (asociación empate en ConsoleType a Game - debe tener relación de uno a muchos):

enter image description here

Seleccionar relación entre ConsoleType y Game una de las propiedades clic en Referencial restricción:

enter image description here

En Referencial restricción de diálogo acaba de establecer relación:

enter image description here

guardar su modelo y generar la base de datos de nuevo.

+0

Ese fue exactamente el problema, muchas gracias (otra vez!) :) –

+0

¿Qué pasa si se trata de una relación de "muchos a muchos"? Como se supone que es de mi comprensión. – Guillaume

+0

@Guillaume: no puede establecer restricciones referenciales en EF cuando usa la relación muchos a muchos. –

Cuestiones relacionadas