2011-11-07 36 views
6

Actualmente estoy aprendiendo el enfoque de diseño impulsado por dominio para el desarrollo y utilizando el diseño .NET Domain Driven Design con el libro C# de Tim McCarthy como guía.Diseño impulsado por dominio y Entity Framework 4.1 (primer código)

El libro es realmente útil, pero me estoy volviendo un poco desagradable cuando se trata de usar el marco entidad, en particular, el enfoque de primer código disponible en 4.1.

Según el ejemplo del libro, el enfoque de la arquitectura en capas debe significar que la capa de infraestructura no puede ver el modelo/dominio.

Entonces, ¿cuál es el mejor enfoque para mapear mi dominio de poco en las clases de contexto de db que (supongo) debería sentarse en la capa de infraestructura, sin contravenir el enfoque en capas?

¡Hay una buena posibilidad de que esté completamente equivocado con mi pensamiento, así que por favor avíseme cuando todavía estoy aprendiendo!

Muchas gracias :)

Adam

+1

Si está utilizando Code-First EF, entonces las POCO son realmente su modelo de dominio – Didaxis

+0

Sí, eso es lo que entendí, ¿pero cómo haría referencia a estos objetos en capas, específicamente infraestructura a dominio/modelo? – adam

+0

Mis modelos están en una biblioteca de clases y la biblioteca de negocios hace referencia a esa DLL. Recomiendo leer algunos artículos sobre patrones de Unidad de Trabajo y Repositorio en línea: funcionan bien con POCO. Aquí: http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application – AFD

Respuesta

7

Pues bien, hoy la mayoría de ORM, como EF 4.1 y Nhibernate (fluido complemento Nhibenrate) puede describir asignaciones de POCO al contexto Db a través de clases de mapeo. Estas clases de mapeo deberían ubicarse mejor en un proyecto de base de datos de infraestructura, tal vez junto con las clases específicas de sesiones de ORM.

A continuación, las clases de dominio POCO se deben colocar en un proyecto de dominio que no debería tener ninguna referencia a otros componentes o proyectos. PERO el proyecto de base de datos de infraestructura debe hacer referencia al dominio para que las clases de mapeo puedan descifrar cómo se debe cargar POCO desde un estado persistente.

Usa mucha inyección de Dependencia junto con un buen y sólido marco IoC (Castillo de Windsor ...). Esto te ayudará a relajar un poco las cosas. Es mejor depender de una abstracción/interfaz en lugar de una implementación.

Aquí es lo básico http://www.infoq.com/articles/ddd-in-practice

pero buena cosa que decidimos ir por el Código de Primera aproximación. Realmente recomiendo ese enfoque si tienes la opción. Pero a veces, cuando los viejos sistemas heredados interfieren, las cosas no son tan fáciles.

+0

Gracias Magnus, esto es el enfoque que he tomado: ensamblaje separado que hace referencia tanto al dominio como a las capas de infraestructura. ¡Habiendo jugado con él ayer, el código primero parece una buena característica de EF! – adam

+0

Buena suerte adam. Siéntase libre de preguntarme o discutir sobre otra cuestión de DDD directamente a mí. Siempre me resulta interesante cómo la gente ve los problemas de diferentes maneras ... –

+0

Gracias Magnus: tengo algunas preguntas más, ¿cuál es la mejor manera de contactarte? – adam

Cuestiones relacionadas