.NET tutorials

Track every EF Core record change with temporal tables

Track every EF Core record change with temporal tables

Learn how to track every change to your EF Core records using SQL Server temporal tables, with examples for querying the history.
.NET app returning a blank 500? Not with exception handlers

.NET app returning a blank 500? Not with exception handlers

Is your ASP.NET Core Web API returning a blank 500 response? Learn how to fix it properly using exception handlers.
PagedResults in EF Core: One class, endless reuse

PagedResults in EF Core: One class, endless reuse

Learn how to build a reusable PagedResults class in .NET that works with Entity Framework Core and supports multiple entity types.
EF Core without migrations - it's only a matter of time

EF Core without migrations - it's only a matter of time

Learn why EF Core without migrations is a disaster. Learn how to setup, configure, and deploy using migrations to keep databases consistent across environments.
Refactoring an ASP.NET Core API with clean architecture

Refactoring an ASP.NET Core API with clean architecture

Learn how to refactor an ASP.NET Core API using clean architecture by separating validation, business logic, and database access into clear layers.
How to migrate from controllers to Minimal APIs

How to migrate from controllers to Minimal APIs

Learn why Minimal APIs are now recommended in .NET and follow a step-by-step guide to migrate from controllers to Minimal APIs with versioning and Swagger.
The best way to create email templates in .NET

The best way to create email templates in .NET

Learn how to generate reusable email HTML using Razor Views in ASP.NET Core with strongly-typed models.
The simplest way to secure a Minimal API (With Swagger)

The simplest way to secure a Minimal API (With Swagger)

Secure your .NET Minimal API quickly using API key authentication, with full Swagger support for testing and protecting endpoints.
Validate .NET configuration on startup

Validate .NET configuration on startup

Learn how to validate .NET configuration on startup using data annotations or FluentValidation, so your app fails fast and never ships with broken config.
EF Core transactions: Stop your data getting out of sync

EF Core transactions: Stop your data getting out of sync

Learn how Entity Framework Core transactions prevent data inconsistencies and how isolation levels affect behaviour in your applications.