C#把一个实体类转换成另一个实体类 数据名字一样 数据结构不同
在C#中,可以使用对象映射(Object Mapping)库来实现将一个实体类转换成另一个实体类,即使数据名字一样但数据结构不同。
一个常用的对象映射库是AutoMapper。下面是一个示例,演示如何使用AutoMapper将一个实体类转换成另一个实体类。
首先,需要安装AutoMapper库。可以通过NuGet包管理器控制台执行以下命令来安装AutoMapper:
Install-Package AutoMapper
假设有两个实体类SourceEntity和DestinationEntity,它们的数据名字一样但数据结构不同:
public class SourceEntity
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class DestinationEntity
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
}
然后,在代码中使用AutoMapper进行对象映射:
using AutoMapper;
// 创建Mapper对象并进行配置
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<SourceEntity, DestinationEntity>()
.ForMember(dest => dest.DateOfBirth, opt => opt.MapFrom(src => DateTime.Now.AddYears(-src.Age)));
});
// 创建Mapper对象
var mapper = config.CreateMapper();
// 创建源实体对象
var sourceEntity = new SourceEntity {
Id = 1,
Name = "John",
Age = 30
};
// 将源实体对象转换成目标实体对象
var destinationEntity = mapper.Map<DestinationEntity>(sourceEntity);
// 打印目标实体对象的属性值
Console.WriteLine($"Id: {destinationEntity.Id}");
Console.WriteLine($"Name: {destinationEntity.Name}");
Console.WriteLine($"DateOfBirth: {destinationEntity.DateOfBirth}");
上述代码中,使用CreateMap方法来配置源实体类和目标实体类之间的映射关系。在这个例子中,通过ForMember方法指定了目标实体类的DateOfBirth属性如何从源实体类的Age属性计算得到。
最后,使用Map方法将源实体对象转换成目标实体对象。在转换过程中,AutoMapper会根据配置好的映射关系自动将对应的属性值复制到目标实体对象中。
注意:在使用AutoMapper之前,需要进行一次初始化配置,这样可以确保映射关系在整个应用程序中都是可用的。在上述示例中,使用MapperConfiguration类创建了一个配置对象,并通过CreateMapper方法创建了一个Mapper对象。
原文地址: https://www.cveoy.top/t/topic/iR5T 著作权归作者所有。请勿转载和采集!