Book Image

C# 10 and .NET 6 – Modern Cross-Platform Development - Sixth Edition

By : Mark J. Price
5 (1)
Book Image

C# 10 and .NET 6 – Modern Cross-Platform Development - Sixth Edition

5 (1)
By: Mark J. Price

Overview of this book

Extensively revised to accommodate all the latest features that come with C# 10 and .NET 6, this latest edition of our comprehensive guide will get you coding in C# with confidence. You’ll learn object-oriented programming, writing, testing, and debugging functions, implementing interfaces, and inheriting classes. The book covers the .NET APIs for performing tasks like managing and querying data, monitoring and improving performance, and working with the filesystem, async streams, and serialization. You’ll build and deploy cross-platform apps, such as websites and services using ASP.NET Core. Instead of distracting you with unnecessary application code, the first twelve chapters will teach you about C# language constructs and many of the .NET libraries through simple console applications. In later chapters, having mastered the basics, you’ll then build practical applications and services using ASP.NET Core, the Model-View-Controller (MVC) pattern, and Blazor.
Table of Contents (20 chapters)
19
Index

Loading patterns with EF Core

There are three loading patterns that are commonly used with EF Core:

  • Eager loading: Load data early.
  • Lazy loading: Load data automatically just before it is needed.
  • Explicit loading: Load data manually.

In this section, we're going to introduce each of them.

Eager loading entities

In the QueryingCategories method, the code currently uses the Categories property to loop through each category, outputting the category name and the number of products in that category.

This works because when we wrote the query, we enabled eager loading by calling the Include method for the related products.

Let's see what happens if we do not call Include:

  1. Modify the query to comment out the Include method call, as shown in the following code:
    IQueryable<Category>? categories =
      db.Categories; //.Include(c => c.Products);
    
  2. In Program.cs, comment out all methods except QueryingCategories...