8

Utilizzo il primo approccio del database Entity Framework 4.1. Ho usato un database legacy. Nel mio file edmx che creava classi di entità basate su tabelle nel database legacy, esiste un'associazione one-to-zero-or- tra alcune entità.Implementazione della relazione one-to-zero-or in SQL Server

Sebbene abbia esplorato le tabelle di database e le relazioni tra di esse, non ho trovato il modo in cui la relazione da uno a zero-uno- è stata implementata nel database.

Per ulteriori informazioni ho messo alcuni screenshot del mio diagramma di database e la proprietà delle sue entità relazione e corrispondenti in file di edmx:

enter image description here enter image description here

risposta

25

La relazione 1-0..1 nel database è direttamente visibile. È costruito tra le tabelle Course e OnlineCourse dove Course è principal in relazione (1) e OnlineCourse dipende da FK configurato su CourseID. FK è anche PK di OnlineCourse = deve essere unico e per questo è 0..1.

Il database "sempre" utilizza 1 - 0..1 perché il 1 - 1 reale non può essere utilizzato efficacemente per l'inserimento dei dati. 1 - 1 significa che sinistra deve essere inserita dopo destra ma destra deve essere inserita dopo sinistra = impossibile. Per questo motivo viene usato 1 - 0..1 dove left è principal e deve essere inserito prima che right and right sia dipendente e deve essere inserito dopo sinistra.

+0

Ho aggiunto una colonna non nullo alla tabella proprietaria contenente l'ID della tabella figlio e aggiunto un trigger di eliminazione per garantire che il figlio venga eliminato. In questo modo posso garantire che il tavolo proprietario abbia esattamente 1 riferimento. –

0

Se le tabelle del database sono già stati progettati con un 1: 1 relazione (o 1: 0-1), quindi EF funzionerà correttamente, anche se pluralizzerà il nome della tabella figlio (se lo si fa pluralizzare).

L'approccio di base è creare una chiave esterna (come se si stesse facendo una relazione 1: many), quindi inserire un indice univoco nel campo della chiave esterna. È questo che stai mirando a realizzare?

Questo potrebbe aiutare anche: Designing 1:1 and 1:m relationships in SQL Server.

In una nota a margine, le relazioni 1-1 spesso non sono necessarie e/o un sintomo di un progetto di database che deve essere ripensato. Tuttavia, sembra che tu abbia ereditato il design ... So tutto di questo!