AutoMapper从对象列表到复杂类型的多对多映射

时间:2019-08-07 13:40:13

标签: automapper

我正在尝试使用Automapper将从视图模型到模型的多对多关系映射,反之亦然。这是我的模型和视图模型以及我的Automapper配置。

public class TestOrder : BaseEntity
{

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public virtual ICollection<TestOrderInventory> TestOrderInventories { get; set; }
}


public class Inventory : BaseEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public virtual ICollection<TestOrderInventory> TestOrderInventories { get; set; }
}

public class TestOrderInventory : BaseEntity
{
    public int TestOrderId { get; set; }
    public TestOrder TestOrder { get; set; }
    public int InventoryId { get; set; }
    public Inventory Inventory { get; set; }
}


public class TestOrderViewModel
{
    public TestOrderViewModel()
    {
        Inventories  = new List<InventoryViewModel>();
    }

    public int Id { get; set; }

    public IEnumerable<InventoryViewModel> Inventories { get; set; }
}


public class InventoryViewModel 
{
    public int Id { get; set; }

}

public class TestOrderInventoryViewModel
{
    public int TestOrderId { get; set; }
    public TestOrderViewModel TestOrder { get; set; }
    public int InventoryId { get; set; }
    public InventoryViewModel Inventory { get; set; }
}



cfg.CreateMap<TestOrderInventory, TestOrderInventoryViewModel>();
cfg.CreateMap<TestOrderInventoryViewModel, TestOrderInventory>();

cfg.CreateMap<TestOrderViewModel, TestOrder>();

cfg.CreateMap<TestOrder, TestOrderViewModel>()
                .ForMember(b => b.Inventories,
                    opt => opt.MapFrom(b => b.TestOrderInventories.Select(ba => ba.Inventory)));

从TestOrderViewModel到TestOrder的映射的配置如何?任何帮助将不胜感激。

0 个答案:

没有答案