AutoMapper官方文档(四)【扁平化(分割)映射】
2017-11-27 23:04
323 查看
扁平化映射
对象-对象映射的一个常见用法是采用复杂的对象模型并将其扁平化为更简单的模型。 你可以采取一个复杂的模型,如:public class Order { private readonly IList<OrderLineItem> _orderLineItems = new List<OrderLineItem>(); public Customer Customer { get; set; } public OrderLineItem[] GetOrderLineItems() { return _orderLineItems.ToArray(); } public void AddOrderLineItem(Product product, int quantity) { _orderLineItems.Add(new OrderLineItem(product, quantity)); } public decimal GetTotal() { return _orderLineItems.Sum(li => li.GetTotal()); } } public class Product { public decimal Price { get; set; } public string Name { get; set; } } public class OrderLineItem { public OrderLineItem(Product product, int quantity) { Product = product; Quantity = quantity; } public Product Product { get; private set; } public int Quantity { get; private set;} public decimal GetTotal() { return Quantity*Product.Price; } } public class Customer { public string Name { get; set; } }
我们希望将这个复杂的
Order对象变成一个更简单的
OrderDto,其中只包含特定场景所需的数据:
public class OrderDto { public string CustomerName { get; set; } public decimal Total { get; set; } }
在
AutoMapper中配置源/目标类型对时,配置程序会尝试将源类型的属性和方法匹配到目标类型的属性。 如果对于目标类型的任何属性,源类型中不存在以
Get为前缀的属性,方法或方法,则
AutoMapper会将目标成员名称拆分为单个单词(按PascalCase约定)。
//复杂的模型 var customer = new Customer { Name = "George Costanza" }; var order = new Order { Customer = customer }; var bosco = new Product { Name = "Bosco", Price = 4.99m }; order.AddOrderLineItem(bosco, 15); //配置AutoMapper Mapper.Initialize(cfg => cfg.CreateMap<Order, OrderDto>()); //执行映射 OrderDto dto = Mapper.Map<Order, OrderDto>(order); dto.CustomerName.ShouldEqual("George Costanza"); dto.Total.ShouldEqual(74.85m);
我们使用
CreateMap方法在
AutoMapper中配置了类型映射。
AutoMapper只能映射它所知道的类型对,所以我们已经用
CreateMap显式地注册了源/目标类型对。 为了执行映射,我们使用
Map方法。
在OrderDto类型上,
Total属性与
Order上的
GetTotal()方法匹配。
CustomerName属性与
Order上的
Customer.Name属性匹配。 只要我们适当地命名我们的目的地属性,我们不需要配置个别的属性匹配。
相关文章推荐
- AutoMapper官方文档(八)【内联映射】
- AutoMapper官方文档(十八)【条件映射,开放泛型,了解你的映射】
- AutoMapper官方文档(十)【嵌套映射】
- AutoMapper官方文档(五)【反向映射和复杂化】
- AutoMapper官方文档(十五)【映射继承】
- AutoMapper官方文档(十六)【可查询扩展】
- Spring官方文档翻译——15.4 处理器映射(Handler mappings)
- Android 5.x OTA Update官方文档(五、Recovery系统下分区映射)
- AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】
- AutoMapper官方文档(十七)【配置】
- AutoMapper官方文档(十一)【自定义类型转换器】
- AutoMapper官方文档(九)【列表和数组】
- MyBatis 官方文档学习2---XML 映射配置文件
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
- AutoMapper官方文档(十四)【依赖注入】
- MyBatis 官方文档学习2---XML 映射配置文件
- MyBatis官方文档——XML 映射配置文件
- AutoMapper官方文档(二)【升级指南】
- AutoMapper官方文档(六)【投影】
- MyBatis 官方文档学习3---XML 映射配置文件