在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(目标成员列表)
X.X.WebSiteMVC3.Models.Thing2-> X.X.DomainObjects.Entities.Thing2(目标成员列表)
东西1
堆栈跟踪:
AutoMapper.ConfigurationStore.AssertConfigurationIsValid(IEnumerable`1 typeMaps)+684
AutoMapper.ConfigurationStore.AssertConfigurationIsValid()+12
AutoMapper.Mapper.AssertConfigurationIsValid()+23
C:\ Source \ X.X.WebSiteMVC3 \ Core \ DependencyResolution \ AutomapperRegistry.cs:13中的X.X.WebSiteMVC3.Core.DependencyResolution.AutomapperRegistry.Configure()
C:\ Source \ X.X.WebSiteMVC3 \ Global.asax.cs中的X.X.WebSiteMVC3.MvcApplication.Application_Start():96
但是在随后的所有其他负载上,它都能按预期工作!
那么...当Thing2的实现与Thing1的实现匹配(始终有效)时,为什么会失败?为什么在Thing2的错误中提到Thing1(我觉得这是原因,但是很奇怪,如果我能在这个空闲的星期四上午10点看到它)?
Muchos Danke!
最佳答案
最后,这是由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上!?通常,发生这种情况时,我确实做了一些奇怪/奇怪的事情,因此我很快就在这里提出了一个问题。在这种情况下,这个问题有些微不足道。
所以...对于可能通过Google到达这里的其他人:这可能与您的模型本身有关,而不是与AutoMapper有关。尽管我仍然不知道为什么映射在第二遍“有效”!那太奇怪了!
关于c# - AutoMapper的AssertConfigurationIsValid仅在首次加载时失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10219935/