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, но когда я пытаюсь сопоставить пользователя с UserDTO, я получаю :Подпись тела и объявление в реализации метода не совпадают.

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

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

6
задан UmmmActually 2 August 2012 в 21:33
поделиться