Estoy tratando de comenzar en el mundo "DDD con C#". Uso NHibernate como mi herramienta ORM, tratando de desarrollar un modelo PI (persistencia ignorante). Sin embargo, en algunas de mis entidades (que están siendo representadas como POCOS), tengo reglas de negocio en el establecimiento de mis propiedades. Por ejemplo, tengo una entidad de "Usuario" que tiene una bandera que indica si este usuario está bloqueado o no, cuando esta bandera es verdadera, un segundo campo llamado "Fecha de Bloque" debe llenarse automáticamente con la fecha actual. Todo parece muy claro y simple, pero el problema surge en el momento en que estoy recuperando usuarios que ya han persistido en la base de datos, aunque los usuarios bloqueados tendrán su actualización de "fechas bloqueadas" a la fecha actual, de acuerdo con esta lógica. Inicialmente pensé en una segunda bandera "isLoaded" que indicaría que el objeto está siendo hidratado por NHibernate y que esta lógica no se lanzaría, , sin embargo, esto no parecía PI. ¿Alguna sugerencia sobre cómo mejorar esto?Modelo de dominio con problema de diseño de Nhibernate
6
A
Respuesta
4
Puede definir la estrategia de acceso al campo en su asignación para la propiedad IsBlocked. Básicamente, le diría a NHibernate que use el campo privado subyacente (_isBlocked) en lugar de la propiedad y, por lo tanto, su lógica setter en la propiedad IsBlocked no se ejecutará.
This SO question tiene una buena respuesta a las estrategias de acceso.
Oficial NHibernate documentation.
Si está utilizando Fluido NHibernate para el mapeo, así es como se podría definir que:
Map(x => x.IsBlocked).Access.CamelCaseField(Prefix.Underscore);
4
Además de solución para el problema Miroslavs NHibernate, yo realmente recomiendo alejarse de poner la lógica detrás de la propiedad setters, especialmente cuando otros campos necesitan ser cambiados.
public void Block()
{
_isBlocked = true;
_blockedDate = DateTime.Now;
}
Ver respuestas a this question por qué.
Cuestiones relacionadas
- 1. modelo de dominio anémico frente a modelo de dominio en un diseño de dominio simple
- 2. Inyector de valor: Dto al modelo de dominio (NHibernate)
- 3. Inyección de dependencias en clases de modelo de dominio con Nhibernate (ASP.NET MVC + IOC)
- 4. modelo de dominio anémico versus modelo de dominio
- 5. Tratando con un modelo de dominio anémico
- 6. ¿Cómo se implementa un modelo de 3 capas con NHibernate?
- 7. Qué es un modelo de dominio
- 8. Escala de un modelo de dominio enriquecido
- 9. ASP.NET MVC NHibernate modelo de unión
- 10. Uso de NHibernate con un modelo de datos EAV
- 11. Diseño controlado por el dominio con Zend
- 12. Problema de concurrencia de NHibernate
- 13. ¿Carga lenta con un modelo de dominio de servicio WCF?
- 14. primavera y el modelo de dominio anémico
- 15. Modelo de dominio enriquecido con comportamientos y ORM
- 16. NHibernate caché/problema de eliminación?
- 17. Diseño impulsado por dominio y eventos de dominio
- 18. problema de caché de nhibernate con consultas de linq
- 19. Diseño impulsado por dominio, objetos de dominio, actitud sobre Setters
- 20. Bestpractice - Modelo de vista de mezcla con el modelo de dominio
- 21. ¿Cómo organizar un proyecto de diseño impulsado por dominio?
- 22. Modelo de dominio compartido con el servicio WCF
- 23. Un modelo de dominio, múltiples vistas json
- 24. Contexto actual de sesión de NHibernate Problema
- 25. NHibernate TransactionScope problema con Oracle 11g
- 26. Problema con NHibernate distintas y paginación
- 27. Uso de un modelo de dominio incorporado con un patrón de estado
- 28. clases desacoplamiento de dominio de las clases Django Modelo
- 29. Haciendo el modelo de dominio de tic tac toe
- 30. Dominio privado de Nhibernate y Sql Servidor error
+1 de esta recomendación –