C# 如何仅在目标对象没有';在Automapper中没有值

C# 如何仅在目标对象没有';在Automapper中没有值,c#,.net,automapper,C#,.net,Automapper,我有一个映射器,我需要执行一个条件映射,条件是,仅当目标属性值为null时,才将值从源映射到目标。我该怎么做 .ForMember(o => o.EmployeeId, opt => opt.MapFrom(u => u.EmployeeId)) 我只想在EmployeeId还没有值的情况下为其赋值。这应该对您有所帮助 CreateMap<YOURMODEL,YOURMODEL2>() .ForMember(dest => dest.Employee

我有一个映射器,我需要执行一个条件映射,条件是,仅当目标属性值为null时,才将值从源映射到目标。我该怎么做

.ForMember(o => o.EmployeeId, opt => opt.MapFrom(u => u.EmployeeId))

我只想在EmployeeId还没有值的情况下为其赋值。

这应该对您有所帮助

CreateMap<YOURMODEL,YOURMODEL2>()
    .ForMember(dest => dest.EmployeeId, opt => {
        opt.PreCondition(src => src.EmployeeId != null);
        opt.MapFrom(src => src.EmployeeId);
CreateMap()
.ForMember(dest=>dest.EmployeeId,opt=>{
opt.predition(src=>src.EmployeeId!=null);
opt.MapFrom(src=>src.EmployeeId);
另一种方式

CreateMap<SourceClass, TargetClass>()
    .ForMember(d => d.EmployeeId, o => o.MapFrom(s => s.EmployeeId))
    .ForAllMembers(o => o.Condition((src, dest, value) => value != null));
CreateMap()
.ForMember(d=>d.EmployeeId,o=>o.MapFrom(s=>s.EmployeeId))
.ForAllMembers(o=>o.Condition((src,dest,value)=>value!=null));

IMemberConfigurationExpression的方法
.MapFrom()
有一个重载,它接受一个IDestination
void MapFrom(Func mappingFunction);
在映射函数中可以检查目标对象

例如:

.ForMember(dest => dest.EmployeeId, opt => opt.MapFrom((src, dest) => dest => src.EmployeeId))

感谢Lucian的回复,在这里发布之前,我确实阅读了这些文档,在文档和所有其他地方,我只找到了一种方法,可以对源属性而不是目标属性设置条件。有许多
条件/前提条件
重载。您只需找到正确的一个。是的,所有这些方法都只能对源属性有效urce对象属性。我确实找到了一种在目标对象属性上写入它的方法。您得到了目标对象。您好,感谢您的响应,这将在源上设置前提条件。我需要的是类似的在目标属性上设置条件的能力。