AutoMapper отношения многие ко многим в коллекцию

Я пытаюсь отобразить сущности в коллекцию через таблицу «многие ко многим», используя AutoMapper.

Моя модель домена (Entity Framework) выглядит следующим образом:

public class User
{
    public int UserID { get; set; }
    public string Name { get; set; }        
    public IList<UserCompany> UserCompanies { get; set; }
}

public class Company
{
    public int CompanyID { get; set; }
    public string Name { get; set; }
}

public class UserCompany
{
    public int UserCompanyID { get; set; }
    public int UserID { get; set; }
    public int CompanyID { get; set; }
}

Я пытаюсь отобразить класс, который выглядит следующим образом:

public class CompanyDTO
{
    public int CompanyID { get; set; }
    public string Name { get; set; }
}

public class UserDTO
{
    public int UserID { get; set; }
    public string Name { get; set; }
    public IList<CompanyDTO> Companies { get; set; }
}

Моя текущая конфигурация отображения выглядит следующим образом:

Mapper.CreateMap<Company, CompanyDTO>(); //works no problem

Mapper.CreateMap<User, UserDTO>()
    .ForMember( dto => dto.Companies,
    opt => opt.MapFrom(x => Mapper.Map<IList<Company>, IList<CompanyDTO>>(x.UserCompanies.Select( y => y.Company ).ToList())));

Утверждение, что конфигурация верна, возвращает true, но когда я пытаюсь на самом деле сопоставить User с UserDTO, я получаю: Подпись тела и объявление в реализации метода не совпадают.

Если я использую AfterMap и вручную перемещаю каждую компанию в список компаний, это будет работать, но, похоже, я смогу справиться с этим в рамках создания карты.

В моем запросе, чтобы получить одного пользователя из БД, я включил свойство навигации UserCompany.Company, и я могу быстро просмотреть и увидеть, что он возвращается.

Ответы на вопрос(1)

Ваш ответ на вопрос