【发布时间】:2021-06-04 14:17:23
【问题描述】:
我需要映射此结果,但出现错误: AutoMapper.AutoMapperConfigurationException: '成员的自定义配置仅支持类型上的顶级个人成员。'
public class ResponseModel
{
public int TotalPageCount { get; set; }
public IEnumerable<ExternalAPIResponseModel> ExternalAPIResponse { get; set; } = new List<ExternalAPIResponseModel>();
}
public class ExternalAPIResponseModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string JobFunction { get; set; }
public string JobLevel { get; set; }
public string CompanyName { get; set; }
public string State { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}
public class Contact
{
public int Ocid { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
// etc.
}
//I know the mistake is here
CreateMap<(IEnumerable<Contact> Contacts, int pagesCount), ResponseModel>()
.ForMember(dest => dest.ExternalAPIResponse.Select( x=>new {
x.Address,
x.CompanyName,
x.FirstName,
x.LastName,
x.JobFunction,
x.JobLevel,
x.Email,
x.Phone,
x.State
}),
opt => opt.MapFrom(src => src.Contacts.Select(c=> new {
c.ContactAddress1,
c.HqcompanyName,
c.FirstName,
c.LastName,
c.IdjobFunctionNavigation.JobFunction1,
c.IdjobLevelNavigation.JobLevel1,
c.Email,
c.ContactPhone,
c.ContactState })))
.ForMember(dest => dest.TotalPageCount, opt => opt.MapFrom(src => src.pagesCount));
//I call it from conntroller like this
var mappedResult = _mapper.Map<ResponseModel>(result);
如何将 (IEnumerable Contacts, int pagesCount) 映射到 ResponseModel 以免出错?
【问题讨论】:
-
你确定要
IEnumerable<ResponseModel>吗?我觉得你只需要ResponseModel,因为它有IEnumerable<ExternalAPIResponseModel>,它将从IEnumerable<Contact>映射 -
是的,你说得对,有错误我会修复,我只需要 ResponseModel
-
result的类型是什么?是Tuple还是IEnumerable<Contacts>或其他?
标签: c# .net .net-core automapper