efcore-patterns

Installation
Summary

EF Core best practices covering NoTracking queries, migration management, query splitting, and change tracking patterns.

  • Configure NoTracking by default for read-heavy workloads; explicitly use .AsTracking() or .Update() for mutations to avoid silent failures
  • Never manually edit migration files; always use CLI commands (dotnet ef migrations add/remove/script) to manage schema changes safely
  • Implement a dedicated migration service with .NET Aspire to separate database setup from application startup and ensure migrations complete before the app runs
  • Use ExecuteUpdateAsync() and ExecuteDeleteAsync() for bulk operations instead of loading entities into memory; apply CreateExecutionStrategy() for transient failure handling
  • Enable QuerySplittingBehavior.SplitQuery globally to prevent cartesian explosion when loading multiple navigation collections, overriding per-query with AsSingleQuery() when appropriate
SKILL.md

Entity Framework Core Patterns

When to Use This Skill

Use this skill when:

  • Setting up EF Core in a new project
  • Optimizing query performance
  • Managing database migrations
  • Integrating EF Core with .NET Aspire
  • Debugging change tracking issues
  • Loading multiple navigation collections efficiently (query splitting)

Core Principles

  1. NoTracking by Default - Most queries are read-only; opt-in to tracking
  2. Never Edit Migrations Manually - Always use CLI commands
  3. Dedicated Migration Service - Separate migration execution from application startup
  4. ExecutionStrategy for Retries - Handle transient database failures
  5. Explicit Updates - When NoTracking, explicitly mark entities for update
Related skills
Installs
977
GitHub Stars
923
First Seen
Jan 28, 2026