Quindi ho letto di DDD per un po 'di tempo e ho cercato di capire l'approccio migliore su diversi argomenti.
Tendo ad essere d'accordo sul fatto che dovrei progettare il mio modello in modo persistente e agnostico. E quei repository dovrebbero caricare e mantenere i miei modelli in stati validi.
Ma questi approcci sono realistici praticamente? Intendo dire che è normale che un modello contenga un riferimento a una raccolta di un altro tipo. Persistendo quel modello dovrebbe significare che persiste l'intera collezione. Belle. Ma ho davvero bisogno di caricare l'intera collezione ogni volta che carico il modello? Probabilmente no.
Quindi posso avere repository specializzati. Alcuni che caricano forse un sottoinsieme del grafico dell'oggetto tramite DTO e altri che caricano l'intero grafico dell'oggetto. Ma quando posso usare quale? Se ho DTO, cosa impedisce al codice client di chiamarli direttamente e di ignorare completamente il modello?
Posso avere mapper e fabbriche per creare i miei modelli da DTOs forse? Ma a seconda del design dei miei modelli potrebbe non funzionare sempre. Oppure potrebbe non consentire la creazione dei miei modelli in uno stato valido.
MODIFICA 1: A parte il caricamento lazy / eager e l'utilizzo di un framework DI per iniettare repository nei miei modelli, qual è un altro approccio?
Qual è l'approccio corretto qui?