automapper的映射问题,在线等,急急急急急急急!!!!!!

oiuyt89561 2014-11-20 04:16:45
问题是这样的,我们底下都用poco里面的实体

poco实体

using System;
using NHibernate.Mapping.Attributes;
using PCITC.MES.EAM.Poco.Equip;
using PCITC.MES.EAM.Poco.SysManager;

namespace PCITC.MES.EAM.Poco.ProfessionalManagement
{
[Class(Table = "eam_pro_sealed_management_t")]
[Component(Name = "SealedManagement")]
public class SealedManagement
{
/// <summary>
/// ID
/// </summary>
[Id(0, TypeType = typeof(long), Name = "Id", UnsavedValue = "0")]
[Column(1, Name = "ID", NotNull = true, SqlType = "number")]
[Generator(2, Class = "sequence")]
[Param(3, Name = "sequence", Content = "s_eam_pro_sealed_management")]
public virtual long Id { get; set; }

/// <summary>
/// 装置编号
/// </summary>
[Property(Column = "function_place_code")]
public virtual string FunctionPlaceCode { get; set; }

/// <summary>
/// 装置名称
/// </summary>
[Property(Column = "function_place_name")]
public virtual string FunctionPlaceName { get; set; }

/// <summary>
/// 密封类型Id
/// </summary>
[Property(Column = "seal_type_id")]
public virtual long? SealTypeId { get; set; }

/// <summary>
/// 设备种类Id
/// </summary>
[Property(Column = "equip_type_id")]
public virtual long? EquipTypeId { get; set; }

/// <summary>
/// 计数键值/ID
/// </summary>
[Property(Column = "countkey_id")]
public virtual long? CountKeyId { get; set; }

/// <summary>
/// 密封点数
/// </summary>
[Property(Column = "sealpoints_count")]
public virtual long? SealPointsCount { get; set; }

/// <summary>
/// 登记日期
/// </summary>
[Property(Column = "registration_date")]
public virtual DateTime? RegistrationDate { get; set; }

/// <summary>
/// 登记人
/// </summary>
[Property(Column = "registration_people")]
public virtual string RegistrationPeople { get; set; }

/// <summary>
/// 上次修改时间
/// </summary>
[Property(Column = "last_modified_date")]
public virtual DateTime? LastModifiedDate { get; set; }

/// <summary>
/// 上次修改人
/// </summary>
[Property(Column = "last_modified_people")]
public virtual string LastModifiedPeople { get; set; }

/// <summary>
/// 上次备注
/// </summary>
[Property(Column = "last_remark")]
public virtual string LastRemark { get; set; }

/// <summary>
/// 装置区域Id
/// </summary>
[Property(Column = "equip_area_id")]
public virtual long? EquipAreaId { get; set; }

/// <summary>
/// 密封类型:在字典表中定义
/// </summary>
[ManyToOne(0, ClassType = typeof(SysDictSub), Column = "SealTypeId", OuterJoin = OuterJoinStrategy.True, Lazy = Laziness.False, NotFound = NotFoundMode.Ignore, Cascade = "save-update", Insert = false, Update = false)]
public virtual SysDictSub SysDictSubEntityBySealType { get; set; }

/// <summary>
/// 设备种类:在字典表中定义
/// </summary>
[ManyToOne(0, ClassType = typeof(SysDictSub), Column = "EquipTypeId", OuterJoin = OuterJoinStrategy.True, Lazy = Laziness.False, NotFound = NotFoundMode.Ignore, Cascade = "save-update", Insert = false, Update = false)]
public virtual SysDictSub SysDictSubEntityByEquipType { get; set; }

/// <summary>
/// 装置区域:在字典表中定义
/// </summary>
[ManyToOne(0, ClassType = typeof(SysDictSub), Column = "EquipAreaId", OuterJoin = OuterJoinStrategy.True, Lazy = Laziness.False, NotFound = NotFoundMode.Ignore, Cascade = "save-update", Insert = false, Update = false)]
public virtual SysDictSub SysDictSubEntityByEquipArea { get; set; }
}
}



然后在前台转换的时候要变为mvc的model中的实体

using System;
using PCITC.MES.EAM.UI.Areas.SysManager.Models;

namespace PCITC.MES.EAM.UI.Areas.ProfessionalManagement.Models
{
public class SealedManagement
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }

/// <summary>
/// 装置编号
/// </summary>
public string FunctionPlaceCode { get; set; }

/// <summary>
/// 装置名称
/// </summary>
public string FunctionPlaceName { get; set; }

/// <summary>
/// 密封类型
/// </summary>
public string SealType { get; set; }

/// <summary>
/// 设备种类
/// </summary>
public string EquipType { get; set; }

/// <summary>
/// 计数键值/ID
/// </summary>
public long? CountKeyId { get; set; }

/// <summary>
/// 密封点数
/// </summary>
public long? SealPointsCount { get; set; }

/// <summary>
/// 登记日期
/// </summary>
public DateTime? RegistrationDate { get; set; }

/// <summary>
/// 登记人
/// </summary>
public string RegistrationPeople { get; set; }

/// <summary>
/// 上次修改时间
/// </summary>
public DateTime? LastModifiedDate { get; set; }

/// <summary>
/// 上次修改人
/// </summary>
public string LastModifiedPeople { get; set; }

/// <summary>
/// 上次备注
/// </summary>
public string LastRemark { get; set; }

//外键

/// <summary>
/// 密封类型字典表编号
/// </summary>
public long? SealTypeId { get; set; }

/// <summary>
/// 设备种类字典表编号
/// </summary>
public long? EquipTypeId { get; set; }

/// <summary>
/// 装置区域Id
/// </summary>
public long? EquipAreaId { get; set; }


/// <summary>
/// 装置ID
/// </summary>
public long? EquipFuncPlaceId { get; set; }

}
}



然后我写了一个转换方法

/// <summary>
/// pocoModel转viewModel
/// </summary>
/// <param name="pocoModel"></param>
/// <returns></returns>
public static SealedManagement BuildSealedManagementToViewModel(Poco.ProfessionalManagement.SealedManagement pocoModel)
{
// 必须声明要转换的类型。可以在程序开始时一次性完成
Mapper.CreateMap<Poco.ProfessionalManagement.SealedManagement, SealedManagement>()
.ForMember(dto => dto.SealType, conf => conf.MapFrom(ol => ol.SysDictSubEntityByEquipType.SubKeyValue))
.ForMember(dto => dto.EquipType, conf => conf.MapFrom(ol => ol.SysDictSubEntityByEquipType.SubKeyValue));
//.ForMember(dto => dto.FunctionPlaceCode, conf => conf.MapFrom(ol => ol.SysDictSubEntityByEquipFuncPlace.FunctionPlaceCode))
//.ForMember(dto => dto.FunctionPlaceName, conf => conf.MapFrom(ol => ol.SysDictSubEntityByEquipFuncPlace.FunctionPlaceName));
// 验证类型映射是否正确
//Mapper.AssertConfigurationIsValid();
return Mapper.Map<Poco.ProfessionalManagement.SealedManagement, SealedManagement>(pocoModel);


于是编译器总是显示红色,但是编译不报错,转换后的结果名称相同的都好的,我上面映射的sealtype和equiptype都是null
求高手解答??

...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oiuyt89561 2014-11-20
  • 打赏
  • 举报
回复
Mapper.CreateMap<Poco.ProfessionalManagement.SealedManagement, SealedManagement>() .ForMember(dto => dto.SealType, conf => conf.MapFrom(ol => ol.SysDictSubEntityBySealType.SubKeyValue)) .ForMember(dto => dto.EquipType, conf => conf.MapFrom(ol => ol.SysDictSubEntityByEquipType.SubKeyValue)); 这点写错了,不过问题是一样的把conf.MapFrom(ol => ol.SysDictSubEntityBySealType.SubKeyValue))改了一下

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧