8

Estoy utilizando la primera base de datos de Entity Framework 4.1. He usado una base de datos heredada. En mi archivo edmx que creó clases de entidades basadas en tablas en la base de datos heredada, existe una asociación one-to-zero-or-one entre algunas entidades.Implementación de una relación uno a cero o uno en SQL Server

Aunque exploré las tablas de la base de datos y la relación entre ellas, no encontré cómo se ha implementado relación uno a cero en la base de datos.

Para más información os pongo unas capturas de pantalla de mi diagrama de base de datos y la propiedad de sus entidades relación y corresponsales en el archivo edmx:

enter image description here enter image description here

Respuesta

25

La relación 1-0.1 en su base de datos está directamente visible. Está construido entre las tablas Course y OnlineCourse donde Course es principal en relación (1) y OnlineCourse depende de FK configurado en CourseID. FK también es PK del OnlineCourse = debe ser único y por eso es 0..1.

La base de datos "siempre" usa 1 - 0..1 porque el 1 - 1 real no se puede usar efectivamente para la inserción de datos. 1 - 1 significa que debe insertarse a la izquierda después de la derecha pero debe insertarse a la derecha después de la izquierda = imposible. Debido a que 1 - 0..1 se usa donde la izquierda es principal y debe insertarse antes de la derecha y la derecha es dependiente y se debe insertar después de la izquierda.

+0

Agregué una columna que no es nula a la tabla propietaria que contiene el ID de la tabla secundaria y agregué un desencadenador de eliminación para asegurar que el elemento secundario se elimine. De esta forma puedo asegurarme de que la tabla posee exactamente 1 referencia. –

0

Si las tablas de bases de datos ya están diseñados con una mezcla 1: 1 relación (o un 1: 0-1), entonces EF trabajará con él muy bien, aunque pluralizará el nombre de la tabla hija (si lo dejas pluralizar).

El enfoque básico es crear una clave externa (como si estuviera haciendo una relación 1: muchos), luego coloque un índice único en el campo de la clave externa. ¿Es eso lo que pretendes lograr?

Esto también podría ser útil: Designing 1:1 and 1:m relationships in SQL Server.

En una nota al margen, a menudo no son necesarias las relaciones 1-1 y/o un síntoma de un diseño de base de datos que necesita ser reconsiderado. Sin embargo, parece que has heredado el diseño ... ¡Lo sé todo!

Cuestiones relacionadas