ef-core-patternslisted
Install: claude install-skill zdanovichnick/dotnet-pilot
# EF Core Patterns
Reference material for EF Core development. Used by `dnp-ef-migration-planner` and `dnp-planner`.
## Migration Safety
### Safe Operations
- Adding a new table
- Adding a nullable column
- Adding a column with a default value
- Adding an index
- Renaming (with `migrationBuilder.RenameColumn` — preserves data)
### Dangerous Operations (require confirmation)
- Dropping a column (data loss)
- Changing column type (potential data truncation)
- Adding NOT NULL column without default (fails on existing rows)
- Dropping a table (data loss)
- Removing an index (performance impact)
### Migration Best Practices
- One migration per logical change
- Never edit generated migration files manually
- Always test with `--dry-run` before applying
- Keep migrations small and reversible
- Use `migrationBuilder.Sql()` for data migrations, not EF operations
## Configuration Patterns
### Fluent API (preferred)
```csharp
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.HasKey(u => u.Id);
builder.Property(u => u.Email).HasMaxLength(256).IsRequired();
builder.HasIndex(u => u.Email).IsUnique();
builder.HasMany(u => u.Orders).WithOne(o => o.User).HasForeignKey(o => o.UserId);
}
}
```
### DbContext Registration
```csharp
// In OnModelCreating:
modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationDbContext).Assembly);
```
## Query Optimization