在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 - &gt; Thing2(目的地会员名单)
X.X.WebSiteMVC3.Models.Thing2 - &gt; X.X.DomainObjects.Entities.Thing2(目标成员列表)
Thing1
堆栈跟踪:
AutoMapper.ConfigurationStore.AssertConfigurationIsValid(IEnumerable`1 typeMaps)+684 AutoMapper.ConfigurationStore.AssertConfigurationIsValid()+ 12 AutoMapper.Mapper.AssertConfigurationIsValid()+23 C:\ Source \ X.X.WebSiteMVC3 \ Core \ DependencyResolution \ AutomapperRegistry.cs中的X.X.WebSiteMVC3.Core.DependencyResolution.AutomapperRegistry.Configure():13 X.X.WebSiteMVC3.MvcApplication.Application_Start()在C:\ Source \ X.X.WebSiteMVC3 \ Global.asax.cs:96
但在每个其他后续加载中,它按预期工作!?
那么......为什么Thing2失败了,当它的实现与Thing1(它一直有效)的实现相匹配时?为什么在Thing2的错误中提到了Thing1(我感觉这是原因,但如果我能在周四的这个空闲时间在上午10点看到它的话,我会感到很沮丧)?
Muchos Danke!
答案 0 :(得分:4)
最后,这是因为Thing2上的交叉引用回到Thing1 ......所以我不得不这样做......
CreateMap<DomainObjects.Entities.Thing2, Models.Thing2>();
CreateMap<Models.Thing2, DomainObjects.Entities.Thing2>()
!-> .ForMember(a => a.Thing1, 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());
令我感到奇怪的是,我收到的错误消息(“未找到成员被发现......”)没有出现在Google上!通常当发生这种情况时,我设法做了一些非常奇怪/奇怪的事情,因此我的快速触发器在这里提出一个问题。在这种情况下,问题有点微不足道。
所以......对于那些可能通过谷歌来到这里的人:这可能与你的模型本身有关,而不是与AutoMapper有些奇怪。虽然我仍然不知道为什么映射在第二次通过时“有效”!那太奇怪了!