Estoy aprendiendo DDD y, sin embargo, tengo más preguntas que respuestas.
Consideremos un modelo de un directorio que contiene una enorme cantidad de archivos.
Así es como lo veo:
El directorio es una raíz agregada.
Esta entidad debe tener la lógica de validación de verificar la unicidad del nombre del archivo cuando se agrega o se renombra. Y la entidad File contiene la lógica 'SetName', que notifica al Directorio a través del Evento de Dominio sobre los cambios de nombre.
Pero, ¿cómo debería funcionar el directorio?
No siempre es posible cargar todos los archivos en la memoria. ¿Debería en este caso el repositorio de archivos tener lógica adhoc para verificar la unicidad del nombre? Supongo que es una decisión viable.
Sin embargo, ¿qué sucede si algunos archivos ya se han agregado o renombrado dentro de una transacción actual aún no confirmada? (nada lo prohíbe. Los límites de las transacciones se establecen externamente en relación con la lógica empresarial). Probablemente el repositorio debe tener en cuenta tanto los estados en memoria como los persistentes (fusionar estos estados puede ser una tarea no trivial).
Entonces, cuando la raíz agregada con todos sus elementos secundarios cabe en la memoria, todo está bien. Y tan pronto como no puedas materializar todas las entidades, hay problemas.
Me gustaría saber cuáles son los enfoques para tales situaciones. Puede que no haya ningún problema en absoluto y es solo debido a mi malentendido sobre el tema.