对象映射与转换的解决方案

1. 手动映射
LINQ
C#
IQueryable<Entity>.Select(item=> new DTO{});

IQuertable<Entity>.ForEachAsync(item=> new DTO{})

循环
C#
foreach(var item in IQueryable<Entity>)
{
    DTO model = new(){}
    List<Entity>.Add(model);
}

2. 序列化
System.Text.Json
C#
JsonSerializer.Deserialize<T>(Entity,options);

Newtonsoft.Json
C#
 JsonConvert.DeserializeObject<T>(Entity,options);

3. 对象映射框架
AutoMapper

AutoMapper的配置

C#
   public class AutoMapperConfigs:Profile
    {
        //通过构造函数把DTO映射到数据库实体,映射方向:左边映射到右边
        public AutoMapperConfigs()
        {
            //角色
            CreateMap<RoleAdd, Role>();
            CreateMap<RoleEdit, Role>();
            //用户
            CreateMap<UserAdd,Users>();
            CreateMap<UserEdit, Users>();
            //菜单
            CreateMap<MenuAdd, Menu>();
            CreateMap<MenuEdit, Menu>();
            
        }
    }
    
    
//AutoMapper映射
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));

AutoMapper的使用

C#
public class EntityService(IMapper _mapper)
{
  
  DTO model = _mapper.Map<Entity>(Entity)

}

Mapster
C#
EntityDTO model = Entity.Adapt<EntityDTO>(); 

5. 使用泛型和反射配合映射

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部