Auto Mapper将数据对象的虚拟属性映射到业务对象时发生错误

问题描述:

我正在使用自动映射器,并能够将我的数据对象映射到业务对象,而无任何问题。但是,当我尝试映射即具有虚拟财产数据对象时,它抛出错误:Auto Mapper将数据对象的虚拟属性映射到业务对象时发生错误

AutoMapper.AutoMapperMappingException:'Unable to create a map expression from AdmissionStatu.AdmissionStatusLookup to 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方法得到错误。我使用相同的设置将所有数据对象映射到业务对象,反之亦然,并且工作正常。但是当我映射具有虚拟属性的对象时,它不起作用。有人能帮我解决这里出了什么问题吗?

试试这个

return Mapper.Map<List<BusinessType>>(query.ProjectTo<BusinessType>(mappingConfig).ToList()) 
+0

我得到了同样的错误 –

+0

虚拟财产'AdmissionStatusLookup'有一个更加虚拟财产吧。这里有关系吗? –

+0

AM不关心虚拟属性:)也许你错过了一张地图。 –