在 X/WebSiteMVC3/Core/DependencyResolution/XProfile.cs 中,我有一个看起来有点像这样的现有映射:
CreateMap<DomainObjects.Entities.Thing1, Models.Thing1>();
CreateMap<Models.Thing1, DomainObjects.Entities.Thing1>()
.ForMember(a => a.Thing2, opt => opt.Ignore())
.ForMember(a => a.ModifiedBy, opt => opt.Ignore())
.ForMember(a => a.ModifiedDate, opt => opt.Ignore())
.ForMember(a => a.CreatedBy, opt => opt.Ignore())
.ForMember(a => a.CreatedDate, opt => opt.Ignore());
我需要为其子对象添加一个映射,所以我输入了这个:
CreateMap<DomainObjects.Entities.Thing2, Models.Thing2>();
CreateMap<Models.Thing2, DomainObjects.Entities.Thing2>()
.ForMember(a => a.ModifiedBy, opt => opt.Ignore())
.ForMember(a => a.ModifiedDate, opt => opt.Ignore())
.ForMember(a => a.CreatedBy, opt => opt.Ignore())
.ForMember(a => a.CreatedDate, opt => opt.Ignore());
它可以工作,除了在第一页加载时,我得到了这个:
未映射的成员被发现。查看下面的类型和成员。添加自定义映射表达式、忽略、添加自定义解析器或修改源/目标类型
Thing2 -> Thing2(目标成员列表)
XXWebSiteMVC3.Models.Thing2 -> XXDomainObjects.Entities.Thing2(目标成员列表)
东西1
堆栈跟踪:
AutoMapper.ConfigurationStore.AssertConfigurationIsValid(IEnumerable`1 typeMaps) +684 AutoMapper.ConfigurationStore.AssertConfigurationIsValid() +12 AutoMapper.Mapper.AssertConfigurationIsValid() +23 XXWebSiteMVC3.Core.DependencyResolution.AutomapperRegistry.Configure() 在 C:\Source\XXWebSiteMVC3\ Core\DependencyResolution\AutomapperRegistry.cs:13 XXWebSiteMVC3.MvcApplication.Application_Start() 在 C:\Source\XXWebSiteMVC3\Global.asax.cs:96
但是在随后的所有其他加载中,它都按预期工作!?
那么......为什么 Thing2 失败了,当它的实现与 Thing1 匹配时(它一直都在工作)?为什么在 Thing2 的错误中提到了 Thing1(我觉得这是原因,但如果我能在这个空闲的星期四上午 10 点看到它,那该死的)?
穆乔斯·丹克!