What problem does it solve? Slow queries, N+1 problems, unbounded result sets, and poorly structured data access layers degrade application performance and are hard to fix retroactively. This Skill provides concrete patterns for building efficient data access layers in .NET from the start. ## Core Features & Use Cases - Read/Write Model Separation: Implements CQRS-style architecture with dedicated read stores returning optimized projections and write stores accepting strongly-typed commands. - Query Optimization Patterns: Covers AsNoTracking for reads, row limits on every query, avoiding N+1 queries with Include or batch queries, and preventing Cartesian explosions with AsSplitQuery. - EF Core vs Dapper Guidance: Provides decision criteria for choosing between EF Core and Dapper, including using both together for writes and reads respectively. - Use Case: When building a new order management endpoint, apply these patterns to create a paginated read store with cursor-based limits and a separate write store, avoiding the generic repository anti-pattern. ## Quick Start Review my data access layer code and apply database performance patterns to eliminate N+1 queries and add row limits.