2010-02-03 8 views
8

¿Es posible usar AutoMapper con tipos inmutables?Automatizador e inmutabilidad

Por ejemplo, mi tipo de dominio es inmutable y quiero asignar mi tipo de vista a esto.

Creo que no es así, pero quiero que esto se confirme.

Además, como es una práctica recomendada que sus tipos de dominio sean inmutables, ¿cuál es la mejor práctica al asignar los tipos de vista a los tipos de dominio?

+0

¿Tipos de dominio inmutables? No creo que sea una afirmación correcta – David

+2

@David ¿Por qué no? –

Respuesta

8

Normalmente hago la asignación de tipos de vista a tipos de dominio a mano, ya que normalmente trabajaré a través de una interfaz más compleja, utilizando métodos, etc. Si usa AutoMapper para pasar de la vista al dominio, ahora está bloqueado en un modelo de dominio anémico, ya sea que lo haya decidido intencionalmente o no.

+0

¿Por qué diría que el modelo de dominio es anémico, si usa el automapper para mapear desde la vista al dominio? Necesitará su modelo de dominio poblado con los datos de la vista de alguna manera. ¿Es porque usted propone crear/poblar el dominio a través de ctors/methods? –

+1

Sí, exactamente. Mira mi serie sobre el fortalecimiento de tu dominio: http://www.lostechies.com/blogs/jimmy_bogard/archive/2010/02/03/strengthening-your-domain-a-primer.aspx Si miras a otra Los frameworks MVC, como Rails, el concepto de un Modelo es un modelo persistente, por lo que no necesita AutoMapper. –

+0

Creo que sus artículos me dejaron boquiabierto. A menudo he usado automapper para mapear objetos de dominio a dto/vm, pero siempre tengo que buscar cómo hacer que el automapper haga algo que simplemente haga corresponder las propiedades entre sí. Hacerlo a mano no facilita la lectura y la depuración. ¿Cómo se estructura el código, es decir, dónde se colocan los métodos que mapean las propiedades de los objetos? – sambomartin

2

AutoMapper confía en los instaladores de propiedades para hacer su trabajo, por lo que si tiene propiedades de solo lectura, AutoMapper no será de mucha utilidad.

Puede anular el comportamiento de la asignación y, por ejemplo, configurarlo para invocar un constructor específico, pero eso básicamente frustra el propósito de AutoMapper porque entonces está haciendo la asignación de forma manual, y solo ha logrado agregar una torpeza paso extra en el proceso.

No tiene mucho sentido para mí que su modelo de dominio sea inmutable. ¿Cómo lo actualizas? ¿Toda la aplicación es de solo lectura? Y si es así, ¿por qué necesitaría alguna vez asignar a su modelo de dominio en comparación con de? Un modelo de dominio inmutable suena ... bastante inútil.

P.S. Supongo que te refieres a this AutoMapper y no a auto-mapping feature in Fluent NHibernate o incluso a algo totalmente diferente. Si eso está mal, entonces debería ser más específico y agregar etiquetas para su plataforma/idioma.

Cuestiones relacionadas