映射时遇到问题
VPerson vPerson = new VPerson() { Id = 2, Lastname = "Hansen1", Name = "Morten1" };
DPerson dPerson = new DPerson() { Id = 1, Lastname = "Hansen", Name = "Morten" };
Mapper.Initialize(x =>
{
//x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});
Mapper.CreateMap();
Mapper.CreateMap()
.ForMember(dest => dest.Id, opt => opt.UseDestinationValue());
Mapper.AssertConfigurationIsValid();
dPerson = Mapper.Map<VPerson, DPerson>(vPerson);
dPerson
是0,我认为它应该是1,或者我错过了什么?
工作示例
VPerson vPerson = new VPerson() { Id = 2, Lastname = "Hansen1", Name = "Morten1" };
DPerson dPerson = new DPerson() { Id = 1, Lastname = "Hansen", Name = "Morten" };
Mapper.Initialize(x =>
{
//x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});
Mapper.CreateMap<DPerson, VPerson>();
Mapper.CreateMap<VPerson, DPerson>()
.ForMember(dest => dest.Id, opt => opt.UseDestinationValue());
Mapper.AssertConfigurationIsValid();
dPerson = Mapper.Map(vPerson, dPerson);
从未使用过 UseDestinationValue() 选项,但看起来您只想在从 VPerson 到 DPerson 时不映射 Id。如果是这种情况,请使用“忽略”选项:
.ForMember(d => d.Id, o => o.Ignore());
EDIT
哦天哪——我什至没有注意到你使用的语法。您需要使用接受现有目标对象的“Map”重载:
Mapper.Map(vPerson, dPerson);
您使用的版本创建一个新的 DPerson,然后执行映射。我上面显示的那个采用已经创建的 dPerson,然后执行映射(并且使用上面显示的“忽略”选项,您的 ID 不会被覆盖)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)