Start here. This is the direct spoken answer to practice first.
Why this matters
Deferred execution determines when a LINQ query becomes SQL and runs. Misunderstanding that boundary can execute a query repeatedly, capture changed parameters, or move expensive work into an unexpected part of the request.
Deferred execution means a LINQ query is not executed when it is defined. It runs when the results are enumerated, for example with ToListAsync, FirstOrDefaultAsync, AnyAsync, or a foreach. With EF Core, the query expression is translated to SQL at execution time. This lets me compose filters before hitting the database.