automapper的简单用法

AutoMapper对象转换方面(Object-Object Mapping)对象映射工具,实现对象和对象之间的转化。主要应用在项目的dto,model,entity或viewmodel之间转换,其实AutoMapper涵盖所有对象(Object)之间的转换。

下面演示他的基本用法:

    public class Customer
    {
        public Guid Id { get; set; }

        public string Number { get;  set; }
        public string Name { get; set; }
        public DateTime RegDate { get; set; }
        public string Note { get; set; }
        public string Address { get; set; }

        public string CategoryID { get; set; }
    }

    public class Product
    {
        public string Id { get; set; }
        public string Number { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }


    }
    public class Order
    {
        public Customer Customer { get; set; }
        public Product Product { get; set; }
        public decimal Qty { get; set; }

        public decimal Getamount()
        {
            return Product.Price*Qty;
        }
    }

先建立这几个类,order、customer、product显示订单业务,这些放到领域层。在前台表现层时,可能不需要order类这么复杂,只要orderDto这个简单的类就行了。

    public class OrderDto
    {
        public string CustomerName { get; set; }
        public string Address { get; set; }
        public decimal Amount { get; set; }
    }


这就需要把order的数据转到orderdto对象中。使用automapper进行转换代码如下

public void Test()
        {
            //先建立实例化对象
            Customer _customer = new Customer()
            {
                Id = new Guid("E8C1D91F-7076-489B-BAA8-8F563BA07402"),
                Number = "01.001",
                Name = "明康医院",
                RegDate = DateTime.Now,
                Note = "sadfasdfsdafsdaf",
                Address = "XX省sss市CCC路32号门诊楼对面",
                CategoryID = "01"
            };
            Product _product = new Product() {Id = "1", Name = "中国式局大全", Number = "00892", Price = 65.8m};

            Order _odr = new Order(){  Customer = _customer,Product = _product,Qty = 6765m};
          



             // 配置 AutoMapper
            Mapper.CreateMap<Order,OrderDto>()
                .ForMember(dest => dest.CustomerName, opt => opt.MapFrom(src => src.Customer.Name))//定义映射规则
                .ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.Customer.Address))//定义映射规则
                .ForMember(dest => dest.Amount, opt => opt.MapFrom(src => src.Getamount()));//定义映射规则

            // 执行 mapping
            OrderDto form = Mapper.Map<Order, OrderDto>(_odr);

            Console.WriteLine("客户名称:"+form.CustomerName);
            Console.WriteLine("客户地址:" + form.Address);
            Console.WriteLine("总金额:" + form.Amount);

        }


使用automapper先建立映射关系,在执行映射。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。