Automapper仅将子对象重新映射到现有的展平VM

时间:2018-08-30 22:45:23

标签: asp.net-mvc automapper viewmodel automapper-6

我有一个父级和子级域对象,它们被映射到一个ViewModel对象。例如

class Parent
{
    public int ID {get;set;}
    public string Name {get;set;}
    public Child Child {get;set;}
}

class Child
{
    public int ID {get; set;}
    public string Name {get; set;}
}

class ParentChildVM
{
    public int ID {get;set;}
    public string Name {get;set;}
    public int ChildID {get;set;}
    public string ChildName {get; set;}
}

类型是在静态配置文件中映射的,它仅使用内置的命名约定来映射属性并实现展平。

我将此ParentChildVM与ASP.NET MVC视图结合使用,该视图将IDName放入表单输入中,但仅 displays {{1 }}和ChildID。由于ChildName的属性不在表单字段中,因此保存时不会将它们发布回服务器,并且在Child中是空的,而ParentChildVM是根据发布的值重建的。

因此,我想将Child域对象重新映射到我的ParentChildVM,以填写缺少的属性。但是我不想再次映射Parent,因为它将覆盖已编辑的值。是否可以通过AutoMapper(v6.1.1.0)将给定的Child实例映射到我现有的ParentChildVM中?

编辑:

我想我知道我可以从Child-> ParentChildVM添加一个映射,然后使用.ForMember告诉它如何映射ChildIDChildName ,但实际上有很多属性,所以我要问的是:有没有办法做到这一点,并且仍然利用基于命名约定的映射?即继续使用AutoMapper的“自动”部分。

0 个答案:

没有答案