2014-02-17 25 views
0

我是Automapper的新手,已经能够处理大多数映射错误(除了这个之外)。一些无效参数与Automapper构建错误映射

当我将CaseInfo实体映射到CaseInfoEdit视图模型时,我在我的(HTTPGET)Edit控制器方法中出现错误,该模型表示我在下面的代码行上有一些无效参数。

var vModel = Mapper.Map<CaseInfo, CaseInfoEditViewModel>(editCase); 

这种映射问题开始后,我包含在此CaseInfoRepository.Get()语句返回检察长实体。该查询的CaseInfo结果将与Attorney参考对象正确返回。

var editCase = unitOfWork.CaseInfoRepository.Get(c => c.CaseInfoID == id, includeProperties: "Attorney"); 

该视图模型有一个外键AttorneyId和一个Attorney引用属性,这就是为什么映射失败我相信。 CaseInfo实体和CaseInfoViewModel都完全一样。

public class CaseInfoEditViewModel 
{ 
    public int CaseInfoID { get; set; } 

    // a bunch of property sets and gets ... 

    public int AttorneyId { get; set; } 
    public virtual Attorney Attorney { get; set; } 

在尝试更正映射时,我添加了一个ForMember将源和目标设置为Attorney引用属性,这对映射问题没有帮助。任何帮助正确的方式来映射引用属性将不胜感激。

Mapper.CreateMap<CaseInfoEditViewModel, CaseInfo>() 
       .ForMember(dst => dst.AttorneyId, opt => opt.MapFrom(src => src.AttorneyId)) 
       .ForMember(dst => dst.Attorney, opt => opt.MapFrom(src => src.Attorney)) 
       .ForMember(dst => dst.CaseInfoID, opt => opt.Ignore()); 

回答