我有一个用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>());
我已经检查过这是通过添加断点来执行的。
在我的控制器中,我有以下内容:
faultVmRec = Mapper.Map<Fault, FaultVmRec>(item);
在这一行,我得到了例外:
{“缺少类型映射配置或不支持的映射。\ r \ n \ r \ nMapping类型:\ r \ nFault - &gt; FaultVmRec \ r \ nLGSS.Unit4.BamPortal.Domain.ESB.Fault - &gt; 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);
然后它运作正常!
任何人都能看到我出错的地方吗?
答案 0 :(得分: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
});
答案 1 :(得分:2)
调用Initialize
实例化新配置。像这样结合起来:
Mapper.Initialize(cfg => {
cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>();
cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>();
});
此外,您应该在初始化之后验证配置以捕获潜在的运行时错误documented here:
Mapper.Configuration.AssertConfigurationIsValid();