Deferred (lazy) loading versus eager loading
In one of the above examples we retrieved the category name of a product using this 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 table and the Categories table and you will see all of the properties of the association. Note that its Referential Constraint properties are 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
However, even with an association the associated data is not loaded when the query is executed. For example, suppose we use the following test method to...