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的优点在于,对于常见场景,您不必进行任何配置()。在层之间映射对象。很好的例子:也许一个例子在这里会有所帮助 假设您有一个非常规范化的数据库模式,如下所示: 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;