---
description: EF Core Commands - Migration and database management
---

# EF Core Commands

> **Ref:** Fonctions communes dans [efcore/_shared.md](efcore/_shared.md)
> **MCP:** `mcp__smartstack__check_migrations` pour analyse conflits

---

## Commandes Disponibles

### Migrations

| Commande | Description | Risque |
|----------|-------------|--------|
| `/efcore:migration` | Créer/recréer migration (1 par feature) | Low |
| `/efcore:db-status` | Afficher statut migrations | None |
| `/efcore:db-deploy` | Appliquer migrations | Low |
| `/efcore:db-seed` | Peupler avec données | Low |
| `/efcore:db-reset` | Drop + Recreate DB | **HIGH** |

### Cross-Branch

| Commande | Description | Risque |
|----------|-------------|--------|
| `/efcore:scan` | Scanner toutes les branches | None |
| `/efcore:conflicts` | Analyser conflits (BLOQUANT) | None |
| `/efcore:rebase-snapshot` | Rebaser ModelSnapshot sur develop | Medium |
| `/efcore:squash` | Fusionner migrations | **HIGH** |

---

## Règle d'Or: 1 Migration par Feature

Si modification du modèle: supprimer et recréer la migration.

---

## Workflow Typique

```
1. /gitflow:10-start feature xxx    → Worktree + appsettings.Local.json
2. /efcore:db-deploy                → Appliquer migrations existantes
3. ... modifications modèle ...
4. /efcore:migration                → Créer LA migration
5. /efcore:db-deploy                → Appliquer localement
6. /gitflow:3-commit                → Commit
```

---

## Workflow Cross-Branch

```
1. /efcore:scan                → Scanner branches actives
2. /efcore:conflicts           → Vérifier conflits (BLOQUANT)
3. /efcore:rebase-snapshot     → Si conflit, rebaser sur develop
4. /efcore:migration           → Créer/recréer migration
```

---

## Sélection Environnement

Toutes les commandes affichent la base cible AVANT exécution.

| Priorité | Fichier |
|----------|---------|
| 1 | `--env {Environment}` flag |
| 2 | `appsettings.Local.json` (défaut) |

**Protection:** Commandes destructives bloquées si Production détecté.

---

## appsettings.Local.json

```json
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=MyApp;Trusted_Connection=true;TrustServerCertificate=true"
  }
}
```

Créé automatiquement par `/gitflow:10-start`, ajouté à `.gitignore`.

---

## Prérequis

- .NET SDK installé
- EF Core Tools: `dotnet tool install --global dotnet-ef`
- SQL Server (ou provider configuré)
