Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 什么';什么是汽车制造商?_Asp.net_.net_Asp.net Mvc_Automapper - Fatal编程技术网

Asp.net 什么';什么是汽车制造商?

Asp.net 什么';什么是汽车制造商?,asp.net,.net,asp.net-mvc,automapper,Asp.net,.net,Asp.net Mvc,Automapper,为什么 它将如何帮助我的域和控制器层(asp.net mvc) 如果您有一种类型的对象,并且希望使用第一种类型的属性填充另一种类型对象的属性,则有两种选择: 手动编写代码来进行这种映射 使用能够自动为您处理此问题的工具 AutoMapper是2的一个例子 最常见的用途是将模型展平为数据传输对象(或通常跨层边界映射)。AutoMapper的优点在于,对于常见场景,您不必进行任何配置()。在层之间映射对象。很好的例子:也许一个例子在这里会有所帮助 假设您有一个非常规范化的数据库模式,如下所示: Or

为什么


它将如何帮助我的域和控制器层(asp.net mvc)

如果您有一种类型的对象,并且希望使用第一种类型的属性填充另一种类型对象的属性,则有两种选择:

  • 手动编写代码来进行这种映射
  • 使用能够自动为您处理此问题的工具
  • AutoMapper是2的一个例子


    最常见的用途是将模型展平为数据传输对象(或通常跨层边界映射)。AutoMapper的优点在于,对于常见场景,您不必进行任何配置()。

    在层之间映射对象。很好的例子:

    也许一个例子在这里会有所帮助

    假设您有一个非常规范化的数据库模式,如下所示:

    Orders (OrderID, CustomerID, OrderDate) Customers (CustomerID, Name) OrderDetails (OrderDetID, OrderID, ProductID, Qty) Products (ProductID, ProductName, UnitPrice) 到目前为止还没有什么痛苦,但现在呢?如何将一组
    OrderDetail
    s转换为一组
    OrderDetailDto
    s进行数据绑定

    您可能会在
    OrderDto
    上放置一个构造函数,该构造函数接受
    OrderDetail
    ,并编写大量映射代码。或者您可能在某个地方有一个静态转换类。或者,您可以使用AutoMapper,并编写以下内容:

    Mapper.CreateMap<OrderDetail, OrderDetailDto>();
    OrderDetailDto[] items =
        Mapper.Map<OrderDetail[], OrderDetailDto[]>(orderDetails);
    GridView1.DataSource = items;
    
    Mapper.CreateMap();
    OrderDetailDto[]项=
    Mapper.Map(订单详细信息);
    GridView1.DataSource=项目;
    
    在那里。我们刚刚将原本会是一堆令人厌恶的毫无意义的映射代码,并将其缩减为三行(实际映射只有两行)


    这有助于解释目的吗?

    几乎所有事情。如果你增加更多关于Automapper的功能,我相信人们会投票…可能重复/相关的问题(但包括一个好例子)这里有一个很好的解释:
    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; }
        }
    }
    
    Mapper.CreateMap<OrderDetail, OrderDetailDto>();
    OrderDetailDto[] items =
        Mapper.Map<OrderDetail[], OrderDetailDto[]>(orderDetails);
    GridView1.DataSource = items;