13

Soy nuevo en el diseño impulsado por dominio pero quiero aprenderlo y usarlo para una nueva aplicación. Utilizaré Entity Framework para el acceso a datos.Domain Driven Design, .NET y Entity Framework

El diseño básico hasta ahora es:

ASP.NET MVC y otros clientes (móviles dispositivos etc.)
|
Webservices
|
Modelo de dominio (Servicios, Repositorios, Agregados, Entidades y Objetos de valor)
|
Capa de acceso a datos (Entity Framework)
|
de almacenamiento de datos (SQL Server)

¿Cuál es la mejor forma de transferir datos entre la capa de acceso a datos y el modelo de dominio? Estoy pensando que las entidades en el modelo de dominio son objetos POCO y que deben asignarse a/desde los objetos de Entity Framework. ¿Es esta una buena solución?

Si es así:
¿Cómo y dónde debe ocurrir tal mapeo? (Capa de modelo de dominio o capa de acceso a datos)
¿Dónde y cómo debería consultar Entity Framework (es decir, devolver una lista basada en una búsqueda)?

+7

Recuerde que DDD es en última instancia, sólo una forma de comunicarse de manera efectiva con el cliente en su propio idioma (dominio), y luego diseñando su aplicación de una manera consistente con ese lenguaje. No es una técnica de desarrollo, per se. Como tal, no hay reglas rígidas sobre dónde colocar qué. –

+6

@Robert Harvey: muy cierto, pero sigue siendo muy útil para tener alguna orientación sobre cómo aplicar las directrices DDD a una situación específica (probablemente bastante común). – jeroenh

Respuesta

3
Estoy pensando que las entidades en el modelo de dominio son objetos POCO y que se deben mapear a/desde los objetos de Entity Framework. ¿Es esta una buena solución?

Creo que es.

Esto es algo que hemos hecho con bastante éxito, aunque en mi caso en el mundo de Java. Nuestras clases de dominio contienen la mayoría de la lógica comercial. Cada uno tiene una referencia a un objeto de entidad de datos delgados y delega la obtención y configuración de las propiedades persistentes a la entidad de datos.

2

El S#arp architecture project es un excelente punto de partida para obtener orientación sobre la aplicación de DDD. Se basa en NHibernate, pero los principios utilizados debe contener igualmente para EF ...