VS报错:Missing type map configuration or unsupported mapping.

1.问题:

       WCFExpetionFaultException方法内部出现没有处理的异常:

       Missing type map configuration or unsupported mapping.

原代码

      //将返回的model实体集转化为契约实体集
             List lisCon = Mapper.Map, List>(list);


2.解决办法:

1> 刚开始检查完方法没有写错之后,就上网查,找到如下方案:

        Mapper.Map<>改写成Mapper.Dynamic<>


     //将返回的model实体集转化为契约实体集
             List lisCon = Mapper.DynamicMap, List>(list);

    结果:不是想要的,虽能避免直接报错但是类型转化完成之后,集合中没有数据


2> 再次检查代码

Model代码:

 public partial class ResultDictionaryTypeEntity
    {

        public ResultDictionaryTypeEntity()
        {
            this.ResultDictionaryEntity = new HashSet();
        }
    
        public string dictionaryTypeId { get; set; }
        public string dictionaryTypeValue { get; set; }
        public string dictionaryTypeName { get; set; }
        public Nullable operatingTime { get; set; }
        public Nullable isDeleted { get; set; }

        public virtual ICollection ResultDictionaryEntity { get; set; }
    }

 上述代码中,最后一句是数据字典主表和从表之间的一种主外键关系,不是实体的属性,问题就出在这里了...


原ViewModel代码:      

   public  class DictionaryTypeViewModel
        {
            [DataMember]
            public string dictionaryTypeId { get; set; }
            [DataMember]
            public string dictionaryTypeValue { get; set; }
            [DataMember]
            public string dictionaryTypeName { get; set; }
           [DataMember]
            public Nullable operatingTime { get; set; }
           [DataMember]
           public Nullable isDeleted { get; set; }

           [DataMember]
           public virtual ICollection ResultDictionaryEntity { get; set; }
        }
  在ViewModel中不该出现最后一句的,因为直接将Model代码复制过来,没有仔细去思考查看,导致不是属性的东西当成属性处理了。


正确的ViewModel代码:

 public  class DictionaryTypeViewModel
        {
            [DataMember]
            public string dictionaryTypeId { get; set; }
            [DataMember]
            public string dictionaryTypeValue { get; set; }
            [DataMember]
            public string dictionaryTypeName { get; set; }
           [DataMember]
            public Nullable operatingTime { get; set; }
           [DataMember]
           public Nullable isDeleted { get; set; }
           
        }

3.关于AutoMapper

1. AutoMapper是对象到对象的映射工具。在完成映射规则之后,AutoMapper可以将源对象转化为目标对象。可简单理解为是转化类型。
  在高校项目中,使用AutoMapper将Model类型的转化成ViewModel类型的。

2.使用AutoMapper,添加引用:  using AutoMapper

3.完整代码:

     //创建一个转化关系
            Mapper.CreateMap();
        

            list = this.CurrentDal.LoadPageItems(pageSize, pageIndex, out total, s => s.resultRateSetID, true).ToList();

     //将返回的model实体集转化为契约实体集
            List lisCon = Mapper.Map, List>(list);

         //返回契约实体集
            return lisCon;

总结:对代码要细心查看,少出现粘贴复制,多思考,多总结



你可能感兴趣的:(【项目分享】)