Tutorials Entity Framework Core Tutorial
Caching with EF Core
Caching with EF Core: free step-by-step lesson with examples, common mistakes, and interview tips — part of Entity Framework Core Tutorial on Toolliyo Academy.
On this page
Entity Framework Core Tutorial · Lesson 65 of 100
Caching with EF Core
Beginner ✓ → Intermediate ✓ → Advanced → Professional
Advanced · 3 — Production skills · ~10 min · Module 7: Performance Optimization
What is this?
Caching stores frequently read query results in memory (IMemoryCache) or distributed cache — EF Core does not cache queries automatically; you cache service results above DbContext.
Why should you care?
ShopNest category tree changes hourly but is read every request — memory cache avoids hammering SQL for static structure.
See it live — copy this example
Paste into a .NET project with EF Core packages, then run with LocalDB/SQL Server (dotnet ef / dotnet run).
public async Task<IReadOnlyList<CategoryNode>> GetCategoryTreeAsync(CancellationToken ct)
{
return await _cache.GetOrCreateAsync("shopnest:categories", async entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1);
return await _context.Categories
.AsNoTracking()
.Select(c => new CategoryNode(c.Id, c.Name, c.ParentCategoryId))
.ToListAsync(ct);
}) ?? [];
}
What happened?
- GetOrCreateAsync runs EF query only on cache miss.
- Cached DTO list expires hourly — DbContext still scoped per miss call.
Practice next
- Cache DTOs not DbContext or tracked entities.
- Set TTL matching business freshness tolerance.
- Invalidate cache on admin category edit.
- Add IMemoryCache size limit and compaction policy.
- Cache product detail by id key shopnest:product:{id} with 5-minute TTL.
Remember
Cache at service layer above EF. Store immutable DTOs with TTL. Invalidate on writes affecting cached data.
ShopNest category cache
Mega menu served from IMemoryCache refreshed hourly; admin edit clears key.
Outcome: SQL category queries drop 99% during browse traffic.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!