¿Qué es Automapper? ¿Cómo me va a ayudar con mi dominio y capa de controlador (asp.net mvc)¿Para qué sirve Automapper?
Respuesta
Tal vez un ejemplo ayudará aquí ...
Digamos que usted tiene un esquema de base de bien normalizada así:
Orders (OrderID, CustomerID, OrderDate) Customers (CustomerID, Name) OrderDetails (OrderDetID, OrderID, ProductID, Qty) Products (ProductID, ProductName, UnitPrice)
Y digamos que usted está usando un buen O/R asignador de que las manos hacia atrás un modelo de dominio bien organizada:
OrderDetail +--ID +--Order |--+--Date |--+--Customer |-----+--ID |-----+--Name +--Product |--+--ID |--+--Name |--+--UnitPrice +--Qty
Ahora te dan un requisito para mostrar todo lo que ha sido ordenado en º e el mes pasado. Desea vincular esto a una rejilla plana, por lo que diligentemente escribe una clase plana para unir:
public class OrderDetailDto
{
public int ID { get; set; }
public DateTime OrderDate { get; set; }
public int OrderCustomerID { get; set; }
public string OrderCustomerName { get; set; }
public int ProductID { get; set; }
public string ProductName { get; set; }
public Decimal ProductUnitPrice { get; set; }
public int Qty { get; set; }
public Decimal TotalPrice
{
get { return ProductUnitPrice * Qty; }
}
}
Eso fue bastante rápido hasta ahora, pero lo que ahora? ¿Cómo podemos convertir un grupo de OrderDetail
en un grupo de OrderDetailDto
para el enlace de datos?
Puede poner un constructor en OrderDto
que toma un OrderDetail
, y escribir un gran lío de código de mapeo. O puede que tenga una clase de conversión estática en alguna parte. O bien, podría usar AutoMapper, y escribir esto en su lugar:
Mapper.CreateMap<OrderDetail, OrderDetailDto>();
OrderDetailDto[] items =
Mapper.Map<OrderDetail[], OrderDetailDto[]>(orderDetails);
GridView1.DataSource = items;
Allí. Acabamos de tomar lo que de otra manera habría sido un lío asqueroso de código de mapeo sin sentido y lo hemos reducido a tres líneas (en realidad solo dos para el mapeo real).
¿Eso ayuda a explicar el propósito?
Casi todo. Si agrega más sobre el poder de Automapper, estoy seguro de que la gente votará a favor ... –
Si tiene un objeto de un tipo y desea rellenar las propiedades de un objeto de otro tipo utilizando propiedades del primer tipo, tiene dos opciones:
- Escriba manualmente el código para realizar dicha asignación.
- Utilice una herramienta que se encargará automáticamente de esto.
AutoMapper es un ejemplo de 2.
El uso más común es aplanar modelos en un objeto de transferencia de datos (o, en general, la cartografía a través de límites de capa). Lo que es muy bueno de AutoMapper es que para escenarios comunes no tienes que hacer ninguna configuración (convention over configuration).
Asignar objetos entre capas. Buen ejemplo: Here
- 1. ¿Para qué sirve SDKDDKVer.h?
- 2. ¿Para qué sirve PowerShell?
- 3. ¿Para qué sirve UnmanagedMemoryStream?
- 4. ¿Para qué sirve ApplicationDomain.domainMemory?
- 5. Cakephp, ¿para qué sirve?
- 6. ¿Para qué sirve memcache.hash_strategy?
- 7. System.Web.Abstractions: ¿para qué sirve?
- 8. ¿Para qué sirve __path__?
- 9. ¿Para qué sirve Clojure?
- 10. ¿Para qué sirve pushState?
- 11. ¿Para qué sirve generator.throw()?
- 12. ¿Para qué sirve Enum?
- 13. ¿Para qué sirve AnyVal.types?
- 14. ¿Para qué sirve cURL?
- 15. ¿Para qué sirve sql-dump?
- 16. ¿Para qué sirve ASP.NET MVC?
- 17. ¿Para qué sirve org.springframework.orm.hibernate3.support.BlobByteArrayType?
- 18. ¿Para qué sirve el operador "==="?
- 19. Oficialmente, ¿para qué sirve typename?
- 20. ¿para qué sirve ~~ en javascript?
- 21. ¿Para qué sirve WS-Addressing?
- 22. ¿Para qué sirve este código?
- 23. ¿Para qué sirve `type_info :: before`?
- 24. Meta Programación, ¿para qué sirve?
- 25. Lucene SpanQuery: ¿para qué sirve?
- 26. ¿Qué es JSR y para qué sirve?
- 27. query_cache_min_res_unit; ¿Qué es y para qué sirve?
- 28. Para qué sirve Page.LoadComplete (en la práctica)
- 29. ¿Para qué sirve la propiedad .NET Control.Margin?
- 30. ¿Para qué sirve la búsqueda exhaustiva?
Posible duplicado/pregunta relacionada (pero incluye un buen ejemplo) es –
Aquí hay una buena explicación: http: // www. kunal-chowdhury.com/2013/01/what-is-automapper-and-how-to-map-objects.html – JoshYates1980