Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does linq to sql automatically lazy load associated entities?

Does linq to sql automatically lazy load associated entities?

I would think it would but I can't find an article stating it as such.

like image 231
RichC Avatar asked Feb 17 '09 17:02

RichC


1 Answers

It depends how you define "lazy-load".

If you say

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.

Then that would be precisely "lazying loading" as the second object is not pulled from the database until it is referenced. This however, will require two database queries.

However, if you were to say,

var family = (from p in db.People
              where p.PersonId = pid 
             select new 
              { 
                 Name = p.Name, 
                 SpouseName = p.Spouse.Name
              }).First();

Then Linq will automatically do the join and load the information from both records in a single database query.

like image 51
James Curran Avatar answered Sep 17 '22 23:09

James Curran