Ho appena finito di leggere l'eccellente libro di Scott Wlaschin " Modellazione del dominio Made Functional: Tackle Software Complexity con Domain-Driven Design e F # " in cui usa il provider di tipi F # SQL per l'accesso al database .
Anticipando la domanda ovvia, dice (p260) di non usare un ORM perché non è possibile garantire l'integrità del dominio in questo modo. Ad esempio, un ORM non può convalidare un indirizzo email, ecc. Non può gestire tipi di scelta annidati, ecc.
Tuttavia, prima nel libro (non riesco a trovarlo a caso, quindi spero di averlo citato correttamente), quando spiega come creare i limiti per ogni sezione del flusso di lavoro, dice che i dati devono essere convalidati in ogni sezione confine, consentendo al codice all'interno della sezione di assumere che sia tutto valido.
Se sì, perché non trattare le entità che escono dall'ORM e nel tuo codice come attraversano un confine e convalidarle lì? In questo modo ottieni i vantaggi dell'ORM, ma assicurati l'integrità del tuo modello.