Auto Mapper v4.2.1 - 缺少类型映射配置或不支持的映射

Rob*_*man 2 c# asp.net-mvc automapper

我有一个用VS2015开发的asp.net mvc应用程序.

在Global.asax.cs的Application_Start方法中,调用包含以下内容的方法:

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>());
Mapper.Initialize(cfg => cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>());
Run Code Online (Sandbox Code Playgroud)

我已经检查过这是通过添加断点来执行的.

在我的控制器中,我有以下内容:

faultVmRec = Mapper.Map<Fault, FaultVmRec>(item);
Run Code Online (Sandbox Code Playgroud)

在这一行,我得到了例外:

{"缺少类型映射配置或不支持的映射.\ r \n\r \nMapping类型:\ r \nFault - > FaultVmRec\r \nLGSS.Unit4.BamPortal.Domain.ESB.Fault - > LGSS.Unit4.BamPortal.Website .Models.FaultVmRec\r \n\r \n目标路径:\ r \nFaultVmRec\r \n\r \nSource值:\ r \nSystem.Data.Entity.DynamicProxies.Fault_805BF7128A26886D33A8989DFA212C8E378EDADE588B0922B23ECFE7F697D907"}

但是,如果我粘贴以在执行映射之前显式初始化映射,如下所示:

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>());
faultVmRec = Mapper.Map<Fault, FaultVmRec>(item);
Run Code Online (Sandbox Code Playgroud)

然后它工作正常!

有人知道我哪里出错吗?

Oğu*_*kan 5

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>)); Mapper.Initialize(cfg => cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>());

此代码段会相互覆盖.你应该配置为:

Mapper.Initialize(cfg => {
  cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>();
  cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>();
  cfg.
  cfg... //so on

});
Run Code Online (Sandbox Code Playgroud)