Da linq a sql automaticamente vengono caricate le entità associate?Da linq a sql carica automaticamente le entità associate?
Vorrei pensare che sarebbe, ma non riesco a trovare un articolo affermandolo come tale.
Da linq a sql automaticamente vengono caricate le entità associate?Da linq a sql carica automaticamente le entità associate?
Vorrei pensare che sarebbe, ma non riesco a trovare un articolo affermandolo come tale.
Sì, lo credo. Ha anche una funzione "load with"/semantica che consente di caricare in batch diverse cose con un approccio shotgun. Questo è utile quando si sa avrete bisogno di dati correlati con l'entità principale destra fuori del blocco, come pre-cache tutti i dati di cui ha bisogno per rendere una singola pagina web ecc
Sì, lazy loading è abilitato di default. Controlla this article.
Dipende da come si definisce "lazy-load".
Se dici
var person = (from p in db.People
where p.PersonId = pid
select p).First();
var spouse = person.Spouse; // based on the SpouseId FK
// back into the People table.
allora sarebbe proprio "lazying loading" come il secondo oggetto non si estrae dalla base di dati fino a quando non viene fatto riferimento. Ciò tuttavia richiederà due query di database.
Tuttavia, se si dovesse dire
var family = (from p in db.People
where p.PersonId = pid
select new
{
Name = p.Name,
SpouseName = p.Spouse.Name
}).First();
Poi Linq verrà automaticamente fare il join e caricare le informazioni da entrambi i record in una singola query di database.