具有自动递增值的AutoMapper

S.C*_*.C. 2 asp.net entity-framework automapper

public class OrderDTO
{
    public string ClientName { get; set; }
    public ICollection<OrderDetailDTO> Details { get; set; }
}

public class Order
{
    public string ClientName { get; set; }
    public ICollection<OrderDetail> Details { get; set; }
}

public class OrderDetailDTO
{
    public int Quantity { get; set; }
    public string ProductName { get; set; }
}

public class OrderDetail
{
    public int OrderId { get; set; }
    public int Quantity { get; set; }
    public string ProductName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

假设有4个OrderDetailDTO,我想让映射的OrderDetail实例具有自动递增的整数值。我现在正在做的是对映射实例进行后处理。

var mappedOrder = Mapper.Map<OrderDTO, Order>(orderDto);
var orderId = 1;
foreach (OrderDetail detail in mappedOrder.Details)
{
    detail.OrderId = orderId++;
}
Run Code Online (Sandbox Code Playgroud)

如何配置映射选项,以便映射的映射ICollection<OrderDetail>包含4个OrderDetail实例,例如OrderId1、2、3、4?

And*_*ker 6

您可以配置AutoMapper来执行以下操作AfterMap

Mapper.CreateMap<OrderDTO, Order>()
    .AfterMap((src, dest) => 
    {
        int orderId = 1;
        foreach (OrderDetail detail in dest.Details)
        {
            detail.OrderId = orderId++;
        }
    });
Run Code Online (Sandbox Code Playgroud)

我认为使用AutoMapper并没有真正的“清洁”方法。