Asp.net
Automapper 有什麼用?
Automapper有什麼用?
它將如何幫助我處理我的域和控制器層(asp.net mvc)?
也許一個例子在這裡會有所幫助……
假設您有一個很好的標準化數據庫模式,如下所示:
訂單(OrderID、CustomerID、OrderDate) 客戶(客戶 ID、姓名) OrderDetails(OrderDetID、OrderID、ProductID、Qty) 產品(ProductID、ProductName、UnitPrice)假設您正在使用一個很好的 O/R 映射器,它可以為您提供一個組織良好的域模型:
訂單詳情 +--身份證 +--訂購 |--+--日期 |--+--客戶 |-----+--標識 |-----+--Name +--產品 |--+--ID |--+--Name |--+--單價 +--數量現在,您需要顯示上個月訂購的所有商品。你想把它綁定到一個平面網格,所以你盡職盡責地編寫一個平麵類來綁定:
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; } } }到目前為止,這很無痛,但現在呢?我們如何將一堆
OrderDetails 變成一堆OrderDetailDtos 進行數據綁定?您可能會在其上放置一個建構子
OrderDto,OrderDetail並編寫一大堆映射程式碼。或者您可能在某處有一個靜態轉換類。或者,您可以使用 AutoMapper,並改為:Mapper.CreateMap<OrderDetail, OrderDetailDto>(); OrderDetailDto[] items = Mapper.Map<OrderDetail[], OrderDetailDto[]>(orderDetails); GridView1.DataSource = items;那裡。我們剛剛採用了原本會令人作嘔的毫無意義的映射程式碼,並將其縮減為三行(實際上只有兩行用於實際映射)。
這有助於解釋目的嗎?