Automapper - 映射嵌套属性

时间:2014-11-05 15:46:22

标签: automapper

我对Automapper有疑问。这是我的用例: 我有这些课程:

经营业务:

public class Item
{
    public NestedItem NestedItem{get;set;}
}

public class NestedItem
{
    public string Name{get;set;}
}

视图模型:

public class ItemViewModel
{
    public string NestedItemName{get;set;}
}

当我想将 Item 映射到 ItemViewModel 时。自动映射属性NestedItem.NameNestedItemName正确。 但是相反的方式它不起作用。映射不会更改NestedItem.Name的值。

1 个答案:

答案 0 :(得分:0)

我对上面提到的链接有一个稍微矛盾的答案,也许我只是把事情弄得很尴尬,但我相信你可以在一张地图上做到。例如:

Mapper.CreateMap<ItemViewModel, Item>()
    .ForMember(dest => dest.NestedItem, opt => 
         opt.MapFrom(src => new NestedItem(src.NestedItemName));

现在当然这需要您创建一个新的构造函数或添加一个空白构造函数并使用大括号。

我无法对性能发表评论,因为AutoMapper是一个非常复杂的怪物。不过这应该可以解决问题。