2012-12-14 13 views
5

Ho creato un modello di database con l'entità framework wizzard in Visual Studio. Ci sono 2 tabelle (job, stocktype) che sono correlate tra loro con la tabella stocktype2job.Entity Framework - Crea proprietà di navigazione

enter image description here

Job <------- no direct relation/navigation property --------> StockType 
|                 | 
|                 | 
---------------------> StockType2Job -----------------------------> 

con un oggetto di lavoro, avrei potuto fare qualcosa di simile ...

EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = new List<StockType>; 
foreach (StockType2Job st2j in job.StockType2Jobs) 
    { 
     stockTypes.add(st2j.StockType); 
    } 

che dovrebbe funzionare bene. Ma esiste un modo per creare una proprietà di navigazione nell'entità lavoro in modo da poter scrivere qualcosa di simile?

EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = job.StockTypes; // <<----- 

Grazie per il vostro aiuto gentile Apo

risposta

2

E 'chiaro (dal riferimento di sé) che StockType2Jobs non contiene solo le chiavi esterne per StockType e Giobbe, quindi non è possibile mappare una relazione molti-molti relazione con una proprietà di navigazione job.StockTypes. Quindi non puoi fare nient'altro che raccogliere StockType tramite job.StockType2Jobs. Ma questo non è un grosso problema:

List<StockType> stockTypes = job.StockType2Jobs.Select(x => x.StockType); 

Si potrebbe avere la tentazione di avvolgere questo in un immobile non mappata job.StockTypes, ma di solito non è una buona idea per fare questo.

1

provare qualcosa di simile:

var stocksTypes = from st in db.StockType 
    from stj in st.StockType2Job where stj.Job.IdJob==40 select st; 
  • Questo codice non sta creando alcuna nuova proprietà di navigazione, semplicemente "lega" i tavoli. Suppongo che la tabella StockType2Jobs esista per una buona ragione.

Vi consiglio di dare un'occhiata a come gestire la relazione N/N con EF.

Alcuni link [1][2]

Speranza aiuta

+0

senza dubbio questo funzionerebbe ma preferisco non usare linq quando c'è un modo più elegante, ma comunque! –

Problemi correlati