Automapper переназначает только дочерний объект на существующую сплющенную виртуальную машину - PullRequest
0 голосов
/ 31 августа 2018

У меня есть родительский и дочерний доменный объект, сопоставленный с одним объектом 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, которое помещает ID и Name во входные данные формы, но только отображает ChildID и ChildName. Так как свойства Child не находятся в полях формы, они не отправляются обратно на сервер после сохранения и являются пустыми в ParentChildVM, который восстанавливается из опубликованных значений.

Итак, я хочу переназначить объект домена Child на мой ParentChildVM, чтобы заполнить недостающие свойства. Но я не хочу отображать Parent снова, потому что он перезапишет отредактированные значения. Есть ли способ сопоставить данный Child экземпляр с моим существующим ParentChildVM с помощью AutoMapper (v6.1.1.0)?

EDIT:

Полагаю, я знаю, что могу добавить отображение из Child -> ParentChildVM, а затем использовать .ForMember, чтобы указать ему, как сопоставлять ChildID и ChildName, но в действительности свойств гораздо больше так что я спрашиваю: есть ли способ сделать это и при этом использовать преимущества сопоставления на основе соглашения об именах? И.Е. продолжайте использовать «Авто» часть AutoMapper.

...