关于AutoMApping 实体映射

时间:2022-07-29 03:24:36

安装AutoMapping包

把订单实体映射成订单DTO实体

关于AutoMApping 实体映射

.ReverseMap()加上这个方法后 下面自定义 映射规则  第一个就是来源对象 第二个就是目标对象

关于AutoMApping 实体映射

关于AutoMApping 实体映射

关于AutoMApping 实体映射

https://www.cnblogs.com/fred-bao/p/5700776.html

ABP中 映射三种写法

1.第一种写法 直接在DTO上面写AutoMapper

关于AutoMApping 实体映射

[AutoMapTo]把当前类映射为Person

[AutoMapForm]把Person映射为当前类

2.第二种写法  创建映射类

关于AutoMApping 实体映射

在Module中注册

关于AutoMApping 实体映射

3.映射类继承Profile

相同类型对象进行映射

使用MapTo() 赋值不会报错   但是映射不成功    只能用MapTo<>()进行类型转换;   相同类型使用MapTo<>()进行映射  映射完成后  两个对象为同一个对象实例

            var aa = new Customer() { Name="张三",CustomerNumber="0001",Phone="150"};
var cc = new Customer() { Name="王五"};
aa.MapTo(cc);
var dd = aa.MapTo<Customer>();

  

            CreateMap<OrderInput, SalesOrder>()
.ForMember(dest => dest.Lines, opt => opt.Ignore());

把OrderInput对象映射为SalesOrder 对象的时候    SalesOrder 中的Lines属性不会被映射    Lines必须要是一个对象    如果只是一个属性就会报错

******************************

统一映射

创建映射类  有N个

    public class AccountProfile : Profile, IProfile
{
public AccountProfile()
{
CreateMap<Account, AccountDto>();
} }

  找到Iprofile接口所在的程序集

  找到这个程序集中所有继承IProfile的类

  统一注入映射规则

            var allTypes = typeof(IProfile)
.Assembly
.GetTypes()
.Where(type => type.IsClass)
.Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type))
.ToList(); Mapper.Initialize(y =>
{
foreach (var type in allTypes)
{
y.AddProfiles(type);
}
});