ef-core
How to Install
Claude Code:
git clone --depth 1 https://github.com/jcasnellie69/homelab-config.git && cp homelab-config/.mcpjam/skills/ef-core ~/.claude/skills/ef-core -r---
name: ef-core
description: 'Get best practices for Entity Framework Core'
---
# Entity Framework Core Best Practices
Your goal is to help me follow best practices when working with Entity Framework Core.
## Data Context Design
- Keep DbContext classes focused and cohesive
- Use constructor injection for configuration options
- Override OnModelCreating for fluent API configuration
- Separate entity configurations using IEntityTypeConfiguration
- Consider using DbContextFactory pattern for console apps or tests
## Entity Design
- Use meaningful primary keys (consider natural vs surrogate keys)
- Implement proper relationships (one-to-one, one-to-many, many-to-many)
- Use data annotations or fluent API for constraints and validations
- Implement appropriate navigational properties
- Consider using owned entity types for value objects
## Performance
- Use AsNoTracking() for read-only queries
- Implement pagination for large result sets with Skip() and Take()
- Use Include() to eager load related entities when needed
- Consider projection (Select) to retrieve only required fields
- Use compiled queries for frequently executed queries
- Avoid N+1 query problems by properly including related data
## Migrations
- Create small, focused migrations
- Name migrations descriptively
- Verify migration SQL scripts before applying to production
- Consider using migration bundles for deployment
- Add data seeding through migrations when appropriate
## Querying
- Use IQueryable judiciously and understand when queries execute
- Prefer strongly-typed LINQ queries over raw SQL
- Use appropriate query operators (Where, OrderBy, GroupBy)
- Consider database functions for complex operations
- Implement specifications pattern for reusable queries
## Change Tracking & Saving
- Use appropriate change tracking strategies
- Batch your SaveChanges() calls
- Implement concurrency control for multi-user scenarios
- Consider using transactions for multiple operations
- Use appropriate DbContext lifetimes (scoped for web apps)
## Security
- Avoid SQL injection by using parameterized queries
- Implement appropriate data access permissions
- Be careful with raw SQL queries
- Consider data encryption for sensitive information
- Use migrations to manage database user permissions
## Testing
- Use in-memory database provider for unit tests
- Create separate testing contexts with SQLite for integration tests
- Mock DbContext and DbSet for pure unit tests
- Test migrations in isolated environments
- Consider snapshot testing for model changes
When reviewing my EF Core code, identify issues and suggest improvements that follow these best practices.
Details
| Category | Coding → testing |
| Source | jcasnellie69/homelab-config |
| SKILL.md | View on GitHub → |
| Repo Stars | N/A |
| Est. per Skill | N/A (shared across 48 skills from this repo) |
| Difficulty | Intermediate |
| Risk Level | Safe |
Related Skills
technical-change-tracker
Technical Change Tracker Overview Track every code change with structured JSON records and accessibl
elixir-pro
Use this skill when Working on elixir pro tasks or workflows Needing guidance, best practices, or ch
internal-comms
When to use this skill To write internal communications, use this skill for: - 3P updates (Progress,
cqrs-implementation
CQRS Implementation Comprehensive guide to implementing CQRS (Command Query Responsibility Segregati
Works Well With
Skills from the same repository — often designed to work together
awk
--- name: awk description: > Expert GNU awk (gawk) one-liner generation and transformation. Use this
flow
--- name: flow description: Use when you need to run Flow type checking, or when seeing Flow type er
flags
--- name: flags description: Use when you need to check feature flag states, compare channels, or de