开发者

Automapper UseDestinationValue

开发者 https://www.devze.com 2023-02-15 13:45 出处:网络
Having a problem with a mapping VPerson vPerson = new VPerson() { Id = 2, Lastname = \"Hansen1\", Name = \"Morten1\" };

Having a problem with a mapping

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 is 0, I would think it s开发者_运维知识库hould be 1, or am I missing something?

Working example

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);


Never used the UseDestinationValue() option, but it looks like you just want to NOT map the Id when going from VPerson to DPerson. If that is the case, use the Ignore option:

.ForMember(d => d.Id, o => o.Ignore());

EDIT

Oh shoot -- I didn't even notice the syntax you were using. You need to use the overload of "Map" that accepts the existing destination object:

Mapper.Map(vPerson, dPerson);

The version you're using creates a new DPerson and then performs the mappings. The one I show above takes the already-created dPerson and then performs the mappings (and with the Ignore option shown above, your Id is not overwritten).

0

精彩评论

暂无评论...
验证码 换一张
取 消