Uso frecuentemente AutoMapper para mapear objetos del Modelo (Dominio) a objetos ViewModel, que luego son consumidos por mis Vistas, en un patrón Modelo/Vista/Modelo de Vista.¿A dónde deberían ir las sentencias 'CreateMap'?
Esto implica muchas sentencias 'Mapper.CreateMap', que deben ejecutarse todas, pero solo deben ejecutarse una vez en el ciclo de vida de la aplicación.
Técnicamente, entonces, debería mantenerlos todos en un método estático en alguna parte, que se llama desde mi método Application_Start() (esta es una aplicación ASP.NET MVC).
Sin embargo, parece incorrecto agrupar una gran cantidad de problemas de mapeo juntos en una ubicación central.
Especialmente cuando el código de mapeo se vuelve complejo e implica el formateo y otra lógica.
¿Hay una mejor manera de organizar el código de mapeo para que se mantenga cerca del modelo de vista que le preocupa?
(me ocurrió una idea - con un método 'CreateMappings' en cada modelo de vista, y en el BaseViewModel, llamar a este método de creación de instancias Sin embargo, dado que el método sólo se debe llamar vez en el ciclo de vida de la aplicación,. necesita alguna lógica adicional para almacenar en caché una lista de tipos de ViewModel para los que se ha llamado al método CreateMappings y luego solo lo llama cuando sea necesario, para ViewModels que no están en esa lista.)
Pero eso no resuelve el problema de tener todas las asignaciones para todas las diferentes vistas-modelos agrupados juntos, cuando yo prefiero tener de alguna manera relacionados con las clases a las que se aplican. – Jonathan