AutoMapper wiele do wielu relacji do kolekcji
Próbuję zmapować elementy do kolekcji za pomocą wielu do wielu tabel przy użyciu AutoMappera.
Mój model domeny (Entity Framework) wygląda tak:
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; }
}
Próbuję odwzorować klasę, która wygląda tak:
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; }
}
Moja obecna konfiguracja mapowania wygląda tak:
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())));
Zapewnienie, że konfiguracja jest poprawna, zwraca true, ale kiedy próbuję odwzorować użytkownika na UserDTO, otrzymuję: Podpis ciała i deklaracja w implementacji metody nie pasują.
Jeśli użyję AfterMap i ręcznie przerzucę każdą Firmę na listę Firm, będzie działać, ale wygląda na to, że powinienem być w stanie poradzić sobie z tym w ramach tworzenia mapy.
W moim zapytaniu, aby uzyskać pojedynczego użytkownika z bazy danych DB, dołączam właściwość nawigacji UserCompany.Company i mogę wykonać szybki podgląd i zobaczyć, że jest zwracany.