Sto usando Entity Framework da .NET 3.5
Ho due tabelle con 0-1 per molte relazioni. Diciamo Cittadino e Città. Ogni cittadino ha una colonna di chiave estera (ID) che lo connette alla Città.
Quando seleziono un singolo cittadino, devo anche selezionare il nome della città in cui vive. Perché la tabella della città contiene tonnellate di dati che non sono realmente correlati ai cittadini, quindi non voglio recuperarli dal database per risparmiare un po 'di banda.
Attualmente sto usando la funzione Include (), ma prende tutti i dati dalla città relativi ai cittadini, mentre ho bisogno solo del nome.
C'è un modo per scrivere una query per selezionare una singola cella dall'intera riga in EF e senza creare nuove classi o interfacce o repository? Ecco il mio Include:
Citizen citizen = db.Citizens.Include("Cities").First(p => p.citizen_id == id);
Lo fai proiettando, ad es
var c = from c in db.Citizens
where c.citizen_id == id
select new
{
Name = c.Name,
CityName = c.City.Name
};
Puoi anche proiettare su POCOs.
Non puoi dire all'EF di recuperare un oggetto di tipo Citizen
con una City
correlata ma con solo City.Name
compilato. L'EF non materializzerà parzialmente un'entità. Utilizzare modelli di visualizzazione / presentazione o DTO anziché entità quando sono necessari solo alcuni campi.