Antonio "tdj"

(C'è sempre un modo migliore)
posts - 312, comments - 268, trackbacks - 17

My Links

News





Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

Articoli

Blogs

Controlli WinForm free

Guide

Siti vari

Sviluppo

EF: interrogare la tabella di relazione molti-a-molti

Entity Framework risolve le relazioni molti-a-molti attraverso le navigation property senza mappare esplicitamente la tabella di relazione presente nel database. In questo modo diventa semplice interrogare queste entità.

Quello che non è possibile fare, almeno direttamente, è accedere alla tabella di relazione proprio perchè non è mappata nel modello dati. Tuttavia, utilizzando LINQ è possibile farlo.

Nel database Northwind esiste una relazione di questo tipo tra le tabelle Employee e Territories mediante la tabella EmployeeTerritories. Nel modello dati questa relazione è rappresentata così:

02.many-tomany2


Volendo elencare tutte le relazioni EmployeeID-TerritoryID della tabella EmployeeTerritories (non mappata) dovremmo fare:

   1:  Dim q = db.Employees.SelectMany(Function(e) e.Territories,
   2:                                  Function(e1, t1) New With {.EmployeeId = e1.EmployeeID, .TerritoryId = t1.TerritoryID})
   3:   
   4:  q.ToList.ForEach(Sub(x) Console.WriteLine("{0} - {1}", x.EmployeeId, x.TerritoryId))


Utilizzando l’extension SelectMany() non facciamo altro che eseguire una query “flat” su entrambe le entità resituendo solo i rispettivi ID delle due tabelle. EF traduce questa query  con il seguente comando SQL:


many-to-many-sql

Print | posted on lunedì 31 maggio 2010 01:43 | Filed Under [ Entity Framework ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET