Deferred execution – lazy loading versus eager loading
In one of the preceding examples, we retrieved the category name of a product using the following expression:
p.Category.CategoryName == "Beverages"
Even though there is no field called categoryname
in the Products
table, we can still get the category name of a product because there is an association between the Products
and Category
tables. In the Northwind.edmx design pane, click on the line that connects the Products and Categories tables and you will see all of the properties of the association. Note that its Referential Constraint
property is Category.CategoryID -> Product.CategoryID
, meaning that category ID
is the key field to link these two tables.
Because of this association, we can retrieve the category for each product and also retrieve products for each category.
Lazy loading by default
Even with an association, the associated data is not loaded when the query is executed. For example, suppose we use the following test method...