Fer*_*lho 5 automapper asp.net-web-api
我认为使用AutoMapper是一个非常常规的场景,它试图动态映射投影,以便不向数据库查询我不会使用的列:
var map = Mapper.CreateMap<Source, DestinationViewModel>();
map.ForAllMembers(opt => opt.Ignore());
if (conditionForFieldA)
map.ForMember(vm => vm.FieldA, conf => conf.MapFrom(src => src.FieldAbc));
if (conditionForFieldB)
map.ForMember(vm => vm.FieldB, conf => conf.MapFrom(src => src.FieldDef));
if (conditionForFieldC)
map.ForMember(vm => vm.FieldC, conf => conf.MapFrom(src => src.FieldGhi));
Run Code Online (Sandbox Code Playgroud)
似乎问题是AutoMapper会将映射设置缓存到Source和DestinationViewModel,并且不会接受/考虑相同的不同映射.这导致了我所面临的问题:它有时会遇到条件,但有时会遇到; 无论这个简单的逻辑如何,它只会查询数据库中第一个Mapper.CreateMap被调用后投影的相同列.
由于它是一个ASP.NET Web API项目,Mapper.Reset()似乎不是一个好的选择,因为AutoMapper安装只发生一次(Application_Start()),但如果我可以重置那些非常特定的映射,那将是很棒的仅设置.
有没有人遇到过这样的场景,之前能够使用AutoMapper解决它?
谢谢!