C#中MVC开发错误,类型异常

       众所周知猫生猫,狗生狗,猫不可能生出狗来。同样的实体是一种强类型关系,经常会因类型写错而报错。无非是一点一点的排除找错,但是ViewModle中,你会去看吗?

       有一种错误叫“AutoMapper.AutoMapperMappingException”类型的异常在AutoMapper.dll 中发生,但未在用户代码中进行处理”,也可以叫“Missingtype map configuration or unsupported mapping”,反正就是类型不匹配。

这是StaticContentBll中的一个方法,类型是StaticContent的,但报错的时候,显示的类型是Category类型。纳尼?

        /// <summary>
        /// 查询静态内容(公用) 
        /// </summary>
        /// <param name="CategoryID">根据类别查询静态内容(公用)</param>
        /// <returns>返回静态内容ViewModle</returns>
        public List<StaticContentViewModel> QueryStaticContent(StaticContentViewModel enCategory, int pageSize, int pageIndex, out int total )
        {
            //调用底层, 查询StaticContent的集合泛型
            List<StaticContent> listStaticContent = this.CurrentDal.LoadPageItems(pageSize, pageIndex, out total,p => p.CategoryID == enCategory.CategoryID, p => p.TimeStamp, false).ToList();
            //创建转换规则,转换实体
            Mapper.CreateMap<StaticContent, StaticContentViewModel>();
            var listStaticContentVM = Mapper.Map<List<StaticContent>, List<StaticContentViewModel>>(listStaticContent);
            //返回查询结果
            return listStaticContentVM;          
        }
       最后敲定的错误在ViewModle中。ViewModle的东西一般是从Model直接导出的,包括各属性以及外键,如下:

    /// <summary>
    /// 静态内容表,存放机构设置、单位简介等
    /// </summary>
    [DataContract]
    public partial class StaticContentViewModel
    {
        /// <summary>
        /// 静态内容ID
        /// </summary>
        [DataMember]
        public System.Guid StaticContentID { get; set; }
        /// <summary>
        /// 静态内容题目
        /// </summary>
        [DataMember]
        public string StaticContentTitle { get; set; }
        /// <summary>
        /// 静态内容内容
        /// </summary>
        [DataMember]
        public string StaticContentContent { get; set; }
        /// <summary>
        /// 图片
        /// </summary>
        [DataMember]
        public string Images { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        [DataMember]
        public System.DateTime TimeStamp { get; set; }
        /// <summary>
        /// 添加人ID
        /// </summary>
        [DataMember]
        public System.Guid UserGUID { get; set; }
        /// <summary>
        /// 类别ID
        /// </summary>
        [DataMember]
        public System.Guid CategoryID { get; set; }
        /// <summary>
        /// 导航属性-类别
        /// </summary>
        public virtual CategoryViewModel Category { get; set; }
        /// <summary>
        /// 导航属性-用户信息
        /// </summary>
        public virtual UserInfoViewModel UserInfo { get; set; }
    }
       ViewModle中都是业务领域的数据,不应该放外键了,放了外键就等于引入另一个类型,所以最后类型都混了。额我是这么理解的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值