zoukankan      html  css  js  c++  java
  • automapper实体中的映射和聚合根中的使用

    一,如下例子:

    using AutoMapper;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace AutoMapper2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实体属性完全一致映射
                Test.InitAutoMapper<ProductDto, Product>();
                ProductDto userDto = new ProductDto()
                {
                    Name = "实体映射",
                    Num = 20,
                };
                //实体间的映射不区分大小写
                var o = Mapper.Map<ProductDto, Product>(userDto);
                var t = Mapper.Map<Product, ProductDto3>(o);
    
    
                //当属性命名大小写不一致时
                Test.InitAutoMapper<ProductDto3, Product>();
                ProductDto3 userDto3 = new ProductDto3()
                {
                    Id = 1,
                    Name = "实体映射",
                    Num = 20,
                    Price = 1
                };
                //实体间的映射不区分大小写
                var oDomain = Mapper.Map<ProductDto3, Product>(userDto3);
                var te = Mapper.Map<Product, ProductDto3>(oDomain);
    
    
                //有DTO模式到聚合根的转换
                ProductDto2 userDto2 = new ProductDto2()
                {
                    Name2 = "实体映射",
                    Num2 = 20,
                    Address = "XXX"
                };
                var map = Mapper.CreateMap<ProductDto2, Product>()
                .ForMember(d => d.Name, opt => opt.MapFrom(x => x.Name2))
                .ForMember(d => d.adress.Name, opt => opt.MapFrom(x => x.Address));
    
                var tt = Mapper.Map<ProductDto2, Product>(userDto2);
    
            }
        }
        public class Test
        {
            public static void InitAutoMapper<DtoModel, DomainModel>()
            {
                var oType = Mapper.FindTypeMapFor<DtoModel, DomainModel>();
                if (oType == null)
                {
                    Mapper.CreateMap<DtoModel, DomainModel>();
                    Mapper.CreateMap<DomainModel, DtoModel>();
                }
            }
        }
        public class Product
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Num { get; set; }
            public int Price { get; set; }
            public Adress adress { get; set; }
    
        }
    
        public class Adress
        {
            public string Name { get; set; }
        }
        public class ProductDto
        {
            public string Name { get; set; }
            public int Num { get; set; }
        }
        public class ProductDto2
        {
            public string Name2 { get; set; }
            public int Num2 { get; set; }
    
            public string Address { get; set; }
        }
        public class ProductDto3
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Num { get; set; }
            public int Price { get; set; }
        }
    }
  • 相关阅读:
    Android 使用html做UI的方法js与java的相互调用
    WebRequest之HttpWebRequest实现服务器上文件的下载(一)
    使用Json比用string返回数据更友好,也更面向对象一些
    DES加密与解密在GET请求时解密失败的问题解决(终级)
    中大型系统架构组合之EF4.1+ASP.NET MVC+JQuery
    说说标准服务器架构(WWW+Image/CSS/JS+File+DB)
    inline内联函数和宏的区别
    [C语言]mac下Des CBC加密
    x264和FFMPEG 编译后遇到的一些问题:UINT64_C,
    关于多线程的那些事
  • 原文地址:https://www.cnblogs.com/May-day/p/7505392.html
Copyright © 2011-2022 走看看