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. 使用泛型和反射配合映射