ADO.Net EF – come definire la relazione di chiave esterna nel primo approccio del modello?

Ho avuto problemi precedenti riguardo l’ereditarietà delle classi e la strutturazione di un database attorno a questo e l’utilizzo del framework di quadro senza successo. Così ho cercato di creare le quadro all’interno di visual studio e vedere quali tabelle di database crea automaticamente.

Ho un Entity MediaItem che è Abstract e Game Inherits da questo. Il gioco ha una console (Int) che corrisponde a ConsoleID. Tuttavia, quando genero il database ottengo una colonna extra indesiderata (ConsoleTypes_ConsoleID) nella tabella MediaItems_Game. Perché questo e come posso evitare che ciò accada? Grazie.

inserisci la descrizione dell'immagine qui

Prima di tutto la tua modella è probabilmente sbagliata. ConsoleType e Game non sono in relazione uno a uno (a meno che tu non abbia un singolo gioco per ogni tipo di console). Mi aspetto che 1 console possa avere più giochi. Quindi dovrebbe essere uno-a-molti. In realtà il gioco può essere rilasciato su più piattaforms, quindi dovrebbe essere molti-a-molti.

Hai una colonna senza vantaggio perché la tua relazione tra ConsoleType e Game non sa che dovrebbe usare la proprietà Console come chiave esterna. Questo succede se usi un’associazione indipendente. Le associazioni indipendenti vengono utilizzate per impostazione predefinita quando le si disegna da un’ quadro ad un’altra entity framework nella finestra di progettazione Entità. È necessario utilizzare l’associazione di chiavi esterne.

Inizia con questa configurazione (associa l’associazione da ConsoleType a Game – devi avere una relazione uno a molti):

inserisci la descrizione dell'immagine qui

Seleziona la relazione tra ConsoleType e Game e nelle proprietà fai clic su Vincolo referenziale :

inserisci la descrizione dell'immagine qui

Nella finestra di dialogo Vincolo referenziale basta impostare la relazione:

inserisci la descrizione dell'immagine qui

Salva il tuo modello e genera nuovamente il database.