EF Core

EF Core skill for database access and ORM integration in .NET applications

Entity Framework Core provides object-relational mapping for .NET applications enabling database access through strongly-typed entities. This skill guides EF Core usage including DbContext configuration, entity modeling, relationship mapping, query optimization, migrations, and best practices ensuring efficient data access with maintainable code.

What Is This?

Overview

EF Core offers comprehensive guidance for Entity Framework Core development. It demonstrates DbContext configuration with dependency injection, models entities with data annotations and fluent API, maps relationships including one-to-many and many-to-many, writes efficient LINQ queries avoiding common pitfalls, generates and applies migrations, and implements patterns like repository and unit of work.

The skill covers EF Core 6, 7, and 8 with version-specific features including compiled models, temporal tables, and JSON columns. It balances convenience with performance for production applications.

Who Should Use This

.NET developers using EF Core. Backend engineers accessing databases. Architects designing data access. Teams learning ORM patterns. Developers optimizing queries. Database administrators collaborating with developers.

Why Use It?

Problems It Solves

DbContext configuration mistakes cause performance issues. Proper setup ensures efficient connection management and tracking behavior.

Inefficient queries generate unnecessary database roundtrips. Query optimization guidance prevents N+1 problems and excessive data loading.

Entity relationships map incorrectly causing runtime errors. Clear relationship configuration ensures correct foreign keys and navigation properties.

Migration management becomes complex in teams. Systematic migration practices prevent conflicts and enable smooth deployments.

Core Highlights

DbContext configuration. Entity modeling patterns. Relationship mapping. Query optimization. Change tracking management. Migration generation. Performance best practices. Async operations. Connection resilience. Testing strategies.

How to Use It?

Basic Usage

Request EF Core guidance for specific scenarios. The skill provides patterns, examples, and best practices.

Show EF Core DbContext setup for ASP.NET Core
with dependency injection and migrations
Demonstrate efficient querying patterns avoiding
N+1 problems in EF Core

Specific Scenarios

For complex relationships, show mapping.

Configure many-to-many relationship in EF Core
with join entity and navigation properties

For performance, emphasize optimization.

Optimize EF Core queries using compiled queries,
split queries, and proper tracking

For testing, demonstrate patterns.

Show testing approach for EF Core repositories
using in-memory database

Real World Examples

A developer builds API using EF Core without optimization knowledge. Queries are slow with many database calls. EF Core guidance provides patterns with Include for eager loading preventing N+1, AsNoTracking for read-only queries improving performance, compiled queries for frequently-used operations, split queries for collections, and proper pagination using Skip and Take. API performance improves dramatically.

A team manages migrations across multiple developers. Conflicts arise from concurrent changes. Best practices guidance recommends one migration per feature branch, testing migrations in development, using idempotent migration scripts, maintaining rollback scripts, and reviewing migrations in pull requests. Migration management becomes smooth.

An architect designs data access layer requiring testability. EF Core patterns are unclear. Guidance demonstrates repository pattern abstracting DbContext, unit of work coordinating changes, dependency injection configuring DbContext lifetime, in-memory database for testing, and separation of read and write models. Data layer is maintainable and testable.

Advanced Tips

Use AsNoTracking for read-only queries. Leverage compiled queries for hot paths. Apply split queries for multiple collections. Configure indexes in fluent API. Use lazy loading selectively. Implement connection resiliency. Batch operations when possible. Profile queries in production. Consider CQRS for complex domains.

When to Use It?

Use Cases

Database access layer design. Repository pattern implementation. Query optimization. Migration management. Testing data access. Performance troubleshooting. Relationship modeling. Team best practices.

Related Topics

Object-relational mapping. LINQ query syntax. Database migration strategies. Repository pattern. Unit of work pattern. Database design. Performance profiling. Testing strategies.

Important Notes

Requirements

EF Core NuGet packages. Database provider installation. Understanding of LINQ. Basic database knowledge. DbContext configuration. Connection string availability.

Usage Recommendations

Configure DbContext lifetime correctly. Use async methods consistently. Apply AsNoTracking for reads. Eager load related data explicitly. Generate migrations frequently. Review generated SQL. Profile query performance. Test with real database. Handle connection failures. Keep migrations small and focused.

Limitations

Not suitable for all scenarios. Performance overhead compared to raw SQL. Learning curve for advanced features. Generated SQL may not be optimal. Complex queries can be challenging. Migration conflicts need manual resolution. Not ideal for reporting queries.