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, и я могу быстро просмотреть и увидеть, что он возвращается.