Ferramentas e automação Fonte oficial
Boas práticas com Entity Framework Core
Reúne orientações para DbContext, entidades, consultas, migrations, rastreamento de mudanças e desempenho no EF Core.
Ver código no GitHub Instala diretamente do repositório-fonte.
O que esta skill faz
Esta skill orienta o desenho e o uso do Entity Framework Core com foco em coesão, consultas eficientes e migrations controladas. Ela aborda relacionamentos, configurações de entidades, paginação, projeções, carregamento relacionado e prevenção de consultas N+1.
Quando usar
- Estruturar um DbContext e configurações de entidades
- Otimizar consultas somente leitura com AsNoTracking
- Implementar paginação e projeções
- Revisar relacionamentos e propriedades de navegação
- Planejar migrations pequenas e descritivas
Como usar
- Revise o repositório, os DbContexts e o modelo de dados
- Separe configurações com IEntityTypeConfiguration quando apropriado
- Analise consultas para projeções, paginação e carregamento relacionado
- Crie migrations focadas e revise o SQL gerado
- Teste consultas e alterações contra o banco usado pelo projeto
O que revisar antes de instalar
- As melhores escolhas dependem do provedor e do modelo de dados
- Include e compiled queries não melhoram todos os cenários
- Migrations devem ser avaliadas antes de chegar à produção
SKILL.md
--- 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.