-1

这是我第一次被automapper陷入困境。我正在尝试将存储过程返回的结果集映射到我的实体。L2S 有可用的结果集,它是我当前测试的一行,可以是多个。通常,如果处理不当,返回类型可为空时会引发 automaper 异常。我将其保留原样并将其更改为某个值,但在这两种情况下我仍然遇到异常。我在这里遗漏了一些非常基本的东西,但不能动手。需要第二双眼睛...谢谢。

代码调用

var annualReportOutreachEditionResult = ClientsContext.AnnualReportOutreachEditionInfoGet(fice, reportYear).ToList();
            if (annualReportOutreachEditionResult != null)
            {
                annualReportOutreachEditionDetail = Mapper.Map<List<AnnualReportOutreachEditionInfoGetResult>, List<AnnualReportOutreachEditionDetail>>(annualReportOutreachEditionResult);

年度报告外展版详细实体

public class AnnualReportOutreachEditionDetail
    {



        public string Edition { get; set; }


        public DateTime MailDate { get; set; }


        public string CardId { get; set; }


    }

AnnualReportOutreachEditionInfoGetResult L2S 实体

public partial class AnnualReportOutreachEditionInfoGetResult
    {

        private string _Edition;

        private System.Nullable<System.DateTime> _MailDate;

        private string _CardId;

        public AnnualReportOutreachEditionInfoGetResult()
        {
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Edition", DbType="VarChar(50)")]
        public string Edition
        {
            get
            {
                return this._Edition;
            }
            set
            {
                if ((this._Edition != value))
                {
                    this._Edition = value;
                }
            }
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MailDate", DbType="Date")]
        public System.Nullable<System.DateTime> MailDate
        {
            get
            {
                return this._MailDate;
            }
            set
            {
                if ((this._MailDate != value))
                {
                    this._MailDate = value;
                }
            }
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardId", DbType="Char(9)")]
        public string CardId
        {
            get
            {
                return this._CardId;
            }
            set
            {
                if ((this._CardId != value))
                {
                    this._CardId = value;
                }
            }
        }
    }

映射

我还检查/测试了日期的默认值,但我的异常仍然存在。那是唯一可以为空的类型。

 public static void MapAnnualReportOutreachEditionDetail()
        {
            Mapper.CreateMap<AnnualReportOutreachEditionInfoGetResult, AnnualReportOutreachEditionDetail>()

                ;
        }

异常详情

AutoMapper.AutoMapperMappingException was unhandled by user code
  Message=Trying to map System.Collections.Generic.List`1[[Nrccua.LinqToSql.AnnualReportOutreachEditionInfoGetResult, Nrccua.LinqToSql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] to System.Collections.Generic.List`1[[Nrccua.BusinessEntities.AnnualReportOutreachEditionDetail, Nrccua.BusinessEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown.
  Source=AutoMapper
  StackTrace:
       at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
       at AutoMapper.MappingEngine.Map(Object source, Type sourceType, Type destinationType)
       at AutoMapper.MappingEngine.Map[TSource,TDestination](TSource source)
       at AutoMapper.Mapper.Map[TSource,TDestination](TSource source)
       at Nrccua.LinqToSql.DataAccess.AnnualReportAccess.GetAnnualReportOutreachEditionDetails(String fice, String reportYear) in C:\Users\tahir\Documents\DATA\Projects\NrccuaWebSite\NrccuaWebSiteTahirj\Core\BusinessEntities\Nrccua.LinqToSql\DataAccess\AnnualReportAccess.cs:line 211
       at Nrccua.Repositories.AnnualReportRepository.GetAnnualReportOutreachEditionDetails(String fice, String reportYear) in C:\Users\tahir\Documents\DATA\Projects\NrccuaWebSite\NrccuaWebSiteTahirj\Core\Repositories\Nrccua.Repositories\AnnualReportRepository.cs:line 199
       at RepositoryTests.AnnualReportTest.GetOutreachDetailsTest() in C:\Users\tahir\Documents\DATA\Projects\NrccuaWebSite\NrccuaWebSiteTahirj\Core\Tests\RepositoryTests\AnnualReportTest.cs:line 55
  InnerException: AutoMapper.AutoMapperMappingException
       Message=Trying to map Nrccua.LinqToSql.AnnualReportOutreachEditionInfoGetResult to Nrccua.BusinessEntities.AnnualReportOutreachEditionDetail.
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown.
       Source=AutoMapper
       StackTrace:
            at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
            at AutoMapper.Mappers.EnumerableMapperBase`1.Map(ResolutionContext context, IMappingEngineRunner mapper)
            at AutoMapper.Mappers.CollectionMapper.Map(ResolutionContext context, IMappingEngineRunner mapper)
            at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
       InnerException: AutoMapper.AutoMapperMappingException
            Message=Trying to map Nrccua.LinqToSql.AnnualReportOutreachEditionInfoGetResult to Nrccua.BusinessEntities.AnnualReportOutreachEditionDetail.
Missing type map configuration or unsupported mapping.
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown.
            Source=AutoMapper
            StackTrace:
                 at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
            InnerException: 
4

1 回答 1

0

It was a problem at my end, I forgot to add the definition for my mapper method. Fixed.

于 2012-06-22T19:20:39.300 回答