7

Deseo utilizar Entity Framework Code-first para un nuevo proyecto. Así que decidí investigar un poco y crear una demo para poder ver cómo funcionaba. A través de, tengo un gran problema o, probablemente, algo más que no está claro para mí que involucre la forma en que el mapa del marco de la entidad primero se correlaciona con las entidades y el diseño impulsado por el dominio.¿Cómo el código del Entity Framework-First mappings refleja el diseño impulsado por el dominio?

Cuando construimos una aplicación, definimos las entidades de dominio. (Definimos raíces de agregados y hacemos repositorios para ellos dependiendo de la situación comercial de lo que he oído)

Eso está bien, pero el mapeo de Entity Framework Code-First parece funcionar como una forma relacional entre las entidades. Entonces, ¿cómo pueden ambos coexistir?

Como un ejemplo (Pensando en el lado diseño impulsado dominio):

DiariocontieneJournalEntycontienetareas, problemas, notas

palabras Cursiva se entidades. De alguna manera, después del análisis, diría que la revista es la raíz agregada del diario agregado y la revista, ya que esta es una composición directa. Cada tarea contiene un valor de hora para saber la cantidad de horas que tardó en finalizar las tareas, por lo que sería una forma de calcular el total de horas y también el salario que se derivaría de esto. El diario tiene la propiedad de tarifa por hora.

Las otras entidades son cada una una raíz agregada y pueden tener una referencia al journalentry para saber dónde pertenecen las tareas, notas y problemas.

Pero el problema viene aquí ... ¿cómo el mapeo del Entity Framework Code-First puede reflejar esto? Desde una perspectiva intuitiva, diríamos que la revista contiene una entrada en el diario y que la entrada del diario contiene notas, problemas y tareas. Pero desde DDD vemos que probablemente no sea el caso. Corrígeme si estoy equivocado, pero el código primero funciona como una base de datos relacional.

Entonces, ¿cómo podríamos mapear el ejemplo anterior en el código primero?

Muchas gracias.

Respuesta

2


Creo que no está mal si cada entidad de dominio tiene la tabla correspondiente en la base de datos. Y no significa que se trate de una estructura relacional ya que el objeto Journal tiene la propiedad JournalEntity (en la estructura relacional journalEntity solo tiene JournalID). Además, es posible asignar la jerarquía de objetos a una tabla y crear Tipos complejos en sus asignaciones. Significa que puede tener escenarios de mapeo más complejos que clase por mesa.

Aquí está ScottGu publicación en el blog sobre él.

Cuestiones relacionadas