- 假设存在以下实体类及其关系:
public class Order
{
public int Id { get; set; }
public ICollection OrderItems { get; set; }
}
public class OrderItem
{
public int Id { get; set; }
public int OrderId { get; set; }
public int ProductId { get; set; }
public Product Product { get; set; }
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
- 创建DTO类,用于映射实体:
public class OrderDto
{
public int Id { get; set; }
public List OrderItems { get; set; }
}
public class OrderItemDto
{
public int Id { get; set; }
public int ProductId { get; set; }
public ProductDto Product { get; set; }
}
public class ProductDto
{
public int Id { get; set; }
public string Name { get; set; }
}
- 在Startup类中配置Automapper:
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(typeof(Startup));
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IMapper mapper)
{
mapper.ConfigurationProvider.AssertConfigurationIsValid();
//...
}
- 创建映射配置类:
public class OrderProfile : Profile
{
public OrderProfile()
{
CreateMap()
.ForMember(dest => dest.Product, opt => opt.MapFrom(src => src.Product));
CreateMap()
.ForMember(dest => dest.OrderItems, opt => opt.MapFrom(src => src.OrderItems))
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id));
CreateMap()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name));
}
}
- 通过Automapper进行转换:
var order = new Order
{
Id = 1,
OrderItems = new List
{
new OrderItem
{
Id = 1,
ProductId = 1,
Product = new Product
{
Id = 1,
Name = "Product 1"
}
},
new OrderItem
{
Id = 2,
ProductId = 2,
Product = new Product
{
Id = 2,
Name = "Product