我正在使用自动映射器,能够将我的数据对象映射到业务对象,而不会出现任何问题。但是当我尝试映射具有虚拟属性的数据对象时,它会抛出错误:
AutoMapper.AutoMapperMappingException:'无法从AdmissionStatu.AdmissionStatusLookup创建地图表达式到AdmissionStatus.AdmissionStatusLookup'
我的业务对象是:
public class AdmissionStatus
{
public long AccountID { get; set; }
public string Description { get; set; }
public string Comment { get; set; }
public AdmissionStatusLookup AdmissionStatusLookup { get; set;}
}
我的数据对象是:
public partial class AdmissionStatu
{
public long AccountID { get; set; }
public string Description { get; set; }
public string Comment { get; set; }
public virtual AdmissionStatusLookup AdmissionStatusLookup { get; set; }
}
我在存储库中的查询是:
var query = from rows in dataContext.AdmissionStatus
where rows.AdmissionID == admissionId
select rows;
return ToBusinessObjects(query);
这是自动映射器映射配置:
protected virtual IConfigurationProvider CreateAutomappingConfiguration()
{
return new MapperConfiguration(c =>
{
c.CreateMap<DataType, BusinessType>();
c.CreateMap<BusinessType, DataType>();
});
}}
和ToBusinessObjects
方法是:
protected List<BusinessType> ToBusinessObjects(IQueryable<DataType> query)
{
return query.ProjectTo<BusinessType>(mappingConfig).ToList();
}
当我调用查询时,我在ToBusinessObjects
方法中遇到错误。我使用相同的设置将所有数据对象映射到业务对象,反之亦然,并且工作正常。但是,当我映射具有虚拟属性的对象时,它无法正常工作。有人可以帮我解决这里出了什么问题。
答案 0 :(得分:0)
试试这个
return Mapper.Map<List<BusinessType>>(query.ProjectTo<BusinessType>(mappingConfig).ToList())