Automapper очень простое вложенное отображение не работает - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь понять, почему эта конфигурация не отображает свойство Company. Должно ли оно работать так, как описано здесь ?

public class CreateAccountViewModel 
{
    public string Name { get; set; }
    public string VatNumber { get; set; }
    public string Acronym { get; set; }
}

public class Account
{
    public string Name { get; set; }
    public string VatNumber { get; set; }
    public Company Company { get; set; }

}

public class Company
{
    public string Acronym { get; set; }
}

public class UnitTest
{
    [Fact]
    public void Foo() 
    {
        var config = new MapperConfiguration(cfg => 
        {
            cfg.CreateMap<CreateAccountViewModel, Account>();
            cfg.CreateMap<CreateAccountViewModel, Company>();
        });

        config.AssertConfigurationIsValid();
    }
}

Результат теста:

  Message: 
    AutoMapper.AutoMapperConfigurationException : 
    Unmapped members were found. Review the types and members below.
    Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type
    For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters
    =====================================================================
    CreateAccountViewModel -> Account (Destination member list)
    Kairos.UnitTests.CreateAccountViewModel -> Kairos.UnitTests.Account (Destination member list)

    Unmapped properties:
    Company

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

AutoMapper не может сделать вывод, что Acronym должен отображаться из свойства объекта, на который ссылается свойство Company. Переименовав целевое свойство в CompanyAcronym, AutoMapper сможет связать их вместе, как описано здесь .

1 голос
/ 04 апреля 2020

Ваш случай и пример не совпадают. В вашем случае вам нужно добавить пользовательское сопоставление для сопоставления свойства Acronym с экземпляром Company.

AutoMapper из вашего примера знает, как сопоставить CreateAccountViewModel с Account и CreateAccountViewModel с Company, но не ' не знаю, как сопоставить строковое свойство Acronym с Company.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...