.net – 什么是Automapper?

前端之家收集整理的这篇文章主要介绍了.net – 什么是Automapper?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是 Automapper?它将如何帮助我的域和控制器层(asp.net mvc)

解决方法

也许一个例子会帮助这里…

假设你有一个很好地规范化的数据库模式,如下所示:

Orders       (OrderID,CustomerID,OrderDate)  
Customers    (CustomerID,Name)  
OrderDetails (OrderDetID,OrderID,ProductID,Qty)  
Products     (ProductID,ProductName,UnitPrice)  

而且我们假设你使用的是一个漂亮的O / R映射器,它可以让你回到一个组织良好的领域模型:

OrderDetail
+--ID
+--Order
|--+--Date
|--+--Customer
|-----+--ID
|-----+--Name
+--Product
|--+--ID
|--+--Name
|--+--UnitPrice
+--Qty

现在,您需要显示上个月订购的所有内容。你想绑定到一个平面网格,所以你尽可能地写一个平面类来绑定:

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;

那里。我们刚刚采取了一个令人厌恶的无意义的映射代码混乱,并将其简化为三行(实际映射中只有两个)。

这有助于解释目的吗?

原文链接:https://www.f2er.com/aspnet/252335.html

猜你在找的asp.Net相关文章