Una gran cantidad de tutoriales sobre DDD que estudié cubren principalmente la teoría. Todos tienen ejemplos de código rudimentario (Pluralsight y similares).
En la web también hay intentos de algunas personas de crear tutoriales que cubran DDD con EF. Si comienza a estudiarlos brevemente, notará rápidamente que difieren mucho entre sí. Algunas personas recomiendan mantener la aplicación mínima y evitar la introducción de capas adicionales, por ejemplo, el repositorio encima de EF , otras están decididamente generando capas adicionales, a menudo incluso violando SRP al inyectar DbContext
en Raíces Agregadas.
Me disculpo terriblemente si hago una pregunta basada en una opinión, pero ...
Cuando se trata de practicar, Entity Framework es uno de los ORM más potentes y ampliamente utilizados. Lamentablemente, no encontrará un curso completo que abarque DDD.
Aspectos importantes:
Entity Framework trae UoW & Repository (
DbSet
) fuera de la cajacon EF sus modelos tienen propiedades de navegación
con EF todos los modelos son siempre disponible fuera
DbContext
(que se representan como unaDbSet
)
Trampas:
no puede garantizar que sus modelos secundarios solo se vean afectados por la raíz agregada: sus modelos tienen propiedades de navegación y es posible modificarlos y llamar
dbContext.SaveChanges()
con la
DbContext
que se puede acceder a cada modelo, por tanto, eludir agregado Raízpuede restringir el acceso a los elementos secundarios del objeto de la raíz a través
ModelBuilder
deOnModelCreating
método marcándolos como campos - Todavía no creer que es la forma correcta de hacer las DDD y además es difícil de evaluar qué tipo de aventuras que esto puede conducir en el futuro ( bastante escépticos )
Conflictos:
sin implementar otra capa de repositorio que devuelva Agregado, ni siquiera podemos resolver en parte las trampas mencionadas anteriormente
Al implementar una capa adicional de repositorio, estamos ignorando las características integradas de EF (todo
DbSet
ya es un repositorio) y complicando demasiado la aplicación
Mi conclusión:
Perdone mi ignorancia, pero en base a la información anterior, o bien Entity Framework no es adecuado para el diseño dirigido por dominio o el diseño dirigido por dominio es un enfoque imperfecto y obsoleto .
Sospecho que cada uno de los enfoques tiene sus méritos, pero ahora estoy completamente perdido y no tengo la menor idea de cómo conciliar EF con DDD.
Si me equivoco, ¿podría alguien al menos detallar un conjunto simple de instrucciones (o incluso proporcionar ejemplos de código decente) de cómo hacer DDD con EF, por favor?