2012-01-18 5 views
10

Sto provando a generare le mie entità dal mio database SQL utilizzando l'elemento del modello di dati Entity di ADO.NET e da lì utilizzando il generatore DbContext di ADO.NET. Quando genero il mio edmx dal database, una delle mie entità sembra mancare nel progettista, ma quando guardo il codice dietro l'edmx lo vedo nel codice e quando genero il dbContext l'entità non viene affatto generata. ..Generazione di Entity Framework mancante un'entità

Qualsiasi consiglio sarebbe molto apprezzato!

+2

È forse la tabella che manca un'entità per una tabella di join per una relazione molti-a-molti? Quelle tabelle non hanno una corrispondente classe di entità. – Slauma

+0

Sì, è una tabella di giunzione da molti a molti. Interessante! Grazie per la vostra risposta! – Hidan

+0

OK, ho pubblicato il mio commento come risposta. – Slauma

risposta

15

Se la tabella in cui manca un'entità per è una tabella di join per una relazione molti-a-molti non si ottiene una classe di entità quando si crea un modello dal database. EF riconosce questo quando la tabella ha due colonne che formano una chiave primaria composta e ogni colonna è una chiave esterna a due altre tabelle.

EF gestisce internamente la tabella di join e non la espone come entità. Hai solo la "sinistra" e l'entità "giusta" con le raccolte di navigazione che puntano l'una sull'altra. Se si aggiunge o si rimuove una relazione aggiungendo o rimuovendo elementi in tali raccolte, EF creerà le istruzioni INSERT e DELETE corrette per la tabella join quando si chiama SaveChanges. Ma questo succede internamente ed è completamente nascosto a te.

In altre parole: tutto è OK.

+0

Ahh ok, grazie per l'ulteriore spiegazione! – Hidan

+0

Quindi non c'è modo di interrogare quell'entità allora? – Hidan

+1

@Willku: Oltre all'uso diretto di SQL, no. Perché non è un'entità. La join table è un artefatto SQL che EF astrae dal design. Non hai bisogno di questo come entità. È possibile eseguire ogni manipolazione della tabella di join tramite le raccolte di navigazione dell'entità sinistra e destra. Se la tabella di join avesse una o più colonne aggiuntive, otterresti un'entità per la tabella. Ma in termini EF questo non sarebbe più una relazione molti-a-molti, ma due relazioni uno-a-molti con quell'entità intermedia. – Slauma