Passa al contenuto principale

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