Entity Framework Core best practices including NoTracking by default, query splitting for navigation collections, migration management, dedicated migration…
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 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 NoTracking by Default - Most queries are read-only; opt-in to tracking Never Edit Migrations Manually - Always use CLI commands Dedicated Migration Service - Separate migration execution from application startup ExecutionStrategy for Retries - Handle transient database failures Explicit Updates - When NoTracking, explicitly mark entities for update
don't have the plugin yet? install it then click "run inline in claude" again.