Automapper ForAllOtherMembers (s => s.Ignore) выбрасывает не отображенную ошибку Версия 6.2.1 - PullRequest
0 голосов
/ 10 мая 2018

Я прочитал много SO сообщений о пропуске не отображенных свойств, но должен быть нюанс, который я не понимаю. Я получаю несопоставленное исключение во время выполнения для свойств, которые я хочу игнорировать. То, что я делаю, является дополнительной проекцией. У меня есть большая модель чтения, которую я извлекаю из базы данных, в которой данные сглажены. Есть несколько строк, которые содержат одни и те же данные, за исключением нескольких точек данных. Вы можете думать об этом как о левом соединении.

 cfg.CreateMap<Readmodel, mappedDocument>(MemberList.None)
                .ForMember(dest => dest.Id, opt => opt.MapFrom(s => s.Id))                   
                .ForAllOtherMembers(s => s.Ignore());

 cfg.CreateMap<Readmodel, mappedDocumentChildObject>(MemberList.None)
                .ForMember(dest => dest.Id, opt => opt.MapFrom(s => s.ChildId))
                .ForMember(dest => dest.Name, opt => opt.MapFrom(s => s.ChildName))                
                .ForAllOtherMembers(s => s.Ignore());

Пример этих данных будет выглядеть так:

Id     Name      ChildId   ChildName
1      Test      11        ChildA
1      Test      12        ChildB

Что я хочу сделать, так это зациклить эти строки и сначала сопоставить объект верхнего уровня с данными, кэшировать его, а затем на следующем проходе извлечь его из кэша и добавить дочерние объекты по мере их появления.

Объект может выглядеть примерно так:

public class Parent
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Child> Children { get; set; }  
}

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

Я не хочу явно создавать отдельные вызовы игнорирования. Я пробовал расширение (которое, я знаю, больше не работает).

Я попытался создать начальный CreateMap, который использует ForAllMembers(s => s.Ignore()), а затем конкретный CreateMap, который отображает свойства, которые меня интересуют.

Я также пытался MemberList.None, но он все еще выбрасывает во время выполнения.

Мне кажется, что я прочитал сообщения SO, сообщения GitHub и документацию, но я все еще не могу заставить это работать.

Любая помощь приветствуется.

...