众所周知猫生猫,狗生狗,猫不可能生出狗来。同样的实体是一种强类型关系,经常会因类型写错而报错。无非是一点一点的排除找错,但是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中都是业务领域的数据,不应该放外键了,放了外键就等于引入另一个类型,所以最后类型都混了。额我是这么理解的。
时间: 2024-10-14 17:20:26