.NET Core项目中使用AutoMapper时,可以通过创建映射配置来指定自定义的映射规则。AutoMapper是一个对象到对象映射的库,它可以自动地将一个对象的属性映射到另一个对象的属性,极大地简化了转换代码的编写。Automapper不指定映射规则,默认是认为两个对象是属性名相同的,如果实体对象和dto(数据传输对象)对象属性名不同,就要指定自定义的映身规则。

1、实体类

下面是实体类Employee和DTO(数据传输对象)类EmployeeDto

public class Employee
{
   public long Id {get;set;}
   public string Name {get;set;}
   public string Phone {get;set;}
   public string Fax {get;set;}
   public DateTime DateOfBirth {get;set;}
}
public class EmployeeDto
{
   public long Id {get;set;}
   public string FullName {get;set;}
   public DateTime DateOfBirth {get;set;}
}

注意Employee类的NameEmployeeDtoFullName属性名字是不同的。

2、Automapper 自定义映射规则(属性对应关系)

针对Employee类的Name和EmployeeDto类FullName属性指定自定义映射规则。

Mapper.CreateMap<Employee, EmployeeDto>()
    .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));

3、使用Mapper

可以使用上述配置的Mapper对象来进行实际的对象映射操作。

// 创建Mapper对象
var mapper = config.CreateMapper();

// 创建一个示例Employee对象
var employee = new Employee
{
    Id = 1,
    Name = "John Doe",
    Phone = "123-456-7890",
    Fax = "098-765-4321",
    DateOfBirth = new DateTime(1990, 1, 1)
};

// 使用AutoMapper将Employee对象映射到EmployeeDto对象
var employeeDto = mapper.Map<EmployeeDto>(employee);

// 输出结果,以验证映射是否成功
Console.WriteLine($"ID: {employeeDto.Id}");
Console.WriteLine($"FullName: {employeeDto.FullName}");
Console.WriteLine($"DateOfBirth: {employeeDto.DateOfBirth.ToString("yyyy-MM-dd")}");

相关文档:ASP.NET Core Automapper的Nuget安装和配置以及demo示例代码

推荐文档