2017-08-21 12 views
0

我正在使用自動映射器,並能夠將我的數據對象映射到業務對象,而無任何問題。但是,當我嘗試映射即具有虛擬財產數據對象時,它拋出錯誤: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方法得到錯誤。我使用相同的設置將所有數據對象映射到業務對象,反之亦然,並且工作正常。但是當我映射具有虛擬屬性的對象時,它不起作用。有人能幫我解決這裏出了什麼問題嗎?

回答

0

試試這個

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

我得到了同樣的錯誤 –

+0

虛擬財產'AdmissionStatusLookup'有一個更加虛擬財產吧。這裏有關係嗎? –

+0

AM不關心虛擬屬性:)也許你錯過了一張地圖。 –

相關問題