我(被迫)使用 AutoMapper version 1.1.0.188 。我有一个基类 SchufaBaseFeature 和一个派生类 SchufaFeature。
public partial class SchufaFeature : SchufaBaseFeature
{//some code here}
为什么 Include 没有像我预期的那样工作?
这就是我使用 AutoMapper 所做的(映射到数据库):
//TODO include does not work as it should!
Mapper.CreateMap<SchufaBaseFeature, CFSCHUFAFEATURE>()
.ForMember(dest => dest.FEATUREWITHOUTBIRTHDATE, opt => opt.MapFrom(src => GetSpecified(EnumToBool(src.featureWithoutBirthdate), src.featureWithoutBirthdateSpecified)))
.ForMember(dest => dest.OWNFEATURE, opt => opt.MapFrom(src => GetSpecified(src.ownFeature, src.ownFeatureSpecified)))
.Include<SchufaFeature, CFSCHUFAFEATURE>()
;
Mapper.CreateMap<SchufaFeature, CFSCHUFAFEATURE>()
.ForMember(dest => dest.DATE, opt => opt.MapFrom(src => GetDate(src.date)))
.ForMember(dest => dest.AMOUNT, opt => opt.MapFrom(src => src.amount.amount))
.ForMember(dest => dest.AMOUNTCUR, opt => opt.MapFrom(src => src.amount.currency))
.ForMember(dest => dest.NUMBEROFINSTALLEMENTS, opt => opt.MapFrom(src => TryParseToInt(src.numberOfInstallments)))
.ForMember(dest => dest.INSTALLMENTTYPE, opt => opt.MapFrom(src => src.installmentType))
;
它正确映射了 FEATUREWITHOUTBIRTHDATE 和 OWNFEATURE,但未调用 Include。当我运行调试器时,第二个 CreateMap 永远不会被调用。
我已经检查了文档here (AutoMapper Github Inheritance)我仍然不明白我做错了什么。可能是什么问题?是我的问题还是这个版本的 AutoMapper 存在错误?
最佳答案
您可能需要切换创建 map 的顺序。 Include 有一个...功能,可以检查现有映射的配置。如果现有 map 尚不存在,您需要切换顺序。
当然,这在 5.0 中已全部修复,但你被困住了:)
关于c# - AutoMapper Include 未按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720096/