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

时间:2017-08-21 20:37:09

标签: c# repository automapper

我正在使用自动映射器,能够将我的数据对象映射到业务对象,而不会出现任何问题。但是当我尝试映射具有虚拟属性的数据对象时,它会抛出错误:

  

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方法中遇到错误。我使用相同的设置将所有数据对象映射到业务对象,反之亦然,并且工作正常。但是,当我映射具有虚拟属性的对象时,它无法正常工作。有人可以帮我解决这里出了什么问题。

1 个答案:

答案 0 :(得分:0)

试试这个

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