Automapper отображает свойства источника на некоторые свойства назначения - PullRequest
0 голосов
/ 20 мая 2019

При создании карты для места назначения класса на основе интерфейса и класса источника на основе другого класса, autopper опускает свойства, новые для класса назначения, сопоставленные с конфигурацией cutom (с использованием ForMember и MapFrom).

Исходный класс и Исходный базовый класс:

public class SourceDictionary: SourceBaseDictionary
{
    public SourceDictionary(int id, string code, string name);
}

public class SourceBaseDictionary: ISourceDictionary
{
    public SourceBaseDictionary();

    public int Id { get; protected internal set; }
    public string Code { get; protected internal set; }
    public string Name { get; protected internal set; }
}

Целевой класс:

public class DestinationDictionary:IDestinationDictionary
{
    public int Id { get; set ; }
    public int Value { get; set; }
    public string Code { get; set; }
    string Label { get; set; }
    string Name { get; set; }
}

Моя конфигурация для Automapper:

 public class AutoMapperDictionary : Profile
 {
     public AutoMapperDictionary()
     {
        CreateMap<SourceDictionary, DestinationDictionary>()
            .ForMember(vm => vm.Value, map => map.MapFrom(m => m.Id))
            .ForMember(vm => vm.Label, map => map.MapFrom(m => m.Name));
     }
 }

И вот почему я получаюсейчас:

 {
    "id": 1,
    "value": 0,
    "code": "codeTest",
    "label": null,
    "name": "nameTest"
  }  

Почему значение свойства и метка не совпадают со значением идентификатора и имени?

РЕДАКТИРОВАТЬ (с дополнительной информацией)

В моем запуске до services.AddMvc () я получаю:

services.AddAutoMapper();
Mapper.Initialize(x =>
{
     x.AddProfile(new AutoMapperDictionary());
     x.ValidateInlineMaps = false;
});

Когда я использую функцию карты:

var queryResult = await conn.QueryAsync<SourceDictionary>(query);
var newDestinationDictionaryList = queryResult.ToList().Select(req => Mapper.Map<DestinationDictionary>(req))

Когда я комментирую строку "x.ValidateInlineMaps =false "Я получил исключение:

AutoMapperConfigurationException ...
Найдены несопоставленные элементы ....
Несопоставленные свойства:
Значение
Метка

...