【发布时间】:2023-02-15 23:45:41
【问题描述】:
我正在使用自动映射器将一个类属性映射到两个不同的其他类,如下代码所示:
var emp = map.Map<EmployeeAddressDto, Employee>(employeeAddressDto);
上面的映射给了我如下的对象:
Address1 = "some xyz address1"
Address2 = "some xyz address2"
Phone = "0000000000"
然后用EmployeeOtherAddressDto映射输出对象
map.Map<EmployeeOtherAddressDto, Employee>(emp);
上面的映射将我的结果更改为:
Address1 = "some other xyz address1"
Address2 = "some other xyz address2"
Phone = null
但我希望它像下面这样:
Address1 = "some other xyz address1"
Address2 = "some other xyz address2"
Phone = "0000000000"
When the above mapping occurs it makes the phone no null but I want it to remain as it was defined on the previous mapping, although I want to override ```Address1``` and ```Address2``` fields.
这是我的映射:
CreateMap<EmployeeAddressDto, Employee>()
.ForMember(dest => dest.Address1, options => options.MapFrom(src => src.Address1))
.ForMember(dest => dest.Address2, options => options.MapFrom(src => src.Address2))
.ForMember(dest => dest.Phone, options => options.MapFrom(src => src.Phone))
.ValidateMemberList(MemberList.None)
.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));
CreateMap<EmployeeOtherAddressDto, Employee>()
.ForMember(dest => dest.Address1, options => options.MapFrom(src => src.Address1))
.ForMember(dest => dest.Address2, options => options.MapFrom(src => src.Address2))
.ValidateMemberList(MemberList.None)
.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));
我想在我的映射配置文件中执行此操作,因为我在很多地方都在使用它并且不想在不使用映射器的情况下更新手机。
【问题讨论】:
标签: c# asp.net .net .net-core automapper