Step 1 — Dominio
Il dominio si tocca per primo. Le entity, le migration e i vincoli del database sono la fondamenta su cui poggia tutto il resto — business logic e UI dipendono da questa stabilità.
Cosa fare
1. Apportare le modifiche al dominio
Implementare le entity e le configurazioni EF emerse dalla modellazione in analisi tecnica. Seguire le regole descritte in regole/entity-framework e regole/dominio:
- nomi dall'Ubiquitous Language, senza abbreviazioni né traduzioni
- constraint e chiavi esterne dichiarati nel modello, non gestiti applicativamente
- migration con nome descrittivo che racconta la decisione di dominio
- nessuna rinomina, nessuna rimozione — solo aggiunte e deprecazioni
2. Scrivere il primo test di integrazione
Appena il dominio è definito, si scrive almeno un test di integrazione che verifichi il funzionamento base. Non deve coprire tutta la business logic — quella viene nel passo successivo — ma deve garantire che il modello sia corretto: che le migration vengano applicate, che i constraint funzionino, che le relazioni siano navigabili.
[Fact]
public async Task CreaOrdine_PersistsCorrectly()
{
// Arrange: database reale con migration applicate
await using var context = CreateDbContext();
var cliente = new Cliente { Nome = "Acme Srl" };
context.Clienti.Add(cliente);
await context.SaveChangesAsync();
// Act
var ordine = new Ordine { ClienteId = cliente.Id, Numero = "ORD-001" };
context.Ordini.Add(ordine);
await context.SaveChangesAsync();
// Assert
var saved = await context.Ordini.FindAsync(ordine.Id);
Assert.NotNull(saved);
Assert.Equal("ORD-001", saved!.Numero);
}
3. Verificare che i test esistenti non si rompano
Le modifiche al dominio non devono rompere i test preesistenti. La CI lo verifica automaticamente, ma è buona pratica girare la suite localmente prima di aprire un commit — specialmente se si toccano entità con molte dipendenze.
Quando il dominio è stabile
Il dominio è stabile quando:
- le migration sono applicate e i test di dominio passano
- nessun test preesistente è rotto
- le breaking changes, se presenti, sono state comunicate
Da questo momento business logic e UI possono procedere in parallelo.
Prossimo step: Step 2 — Business Logic