Mapster icon indicating copy to clipboard operation
Mapster copied to clipboard

New object is created on destination instead of null when using Adapt<>

Open nikitabraganov opened this issue 1 year ago • 3 comments

I have the following classes:

ScheduleWrapper

 public Guid ID { get; set; }  
 public Guid? CompanyID { get; set; }  
 public CItyWrapper City {get;set;}  
 public CItyWrapper City1 {get;set;}  

Schedule

 public Guid ID { get; set; }
 public Guid? CompanyID { get; set; }
 public Company Company { get; set; }
 public CIty Start{get;set;}
 public CIty End {get;set;}

When I try to adapt ScheduleWrapper to Schedule, on Schedule an empty Company object will be created instead of null.

Other configurations are:

config.Default.PreserveReference(true);
config.Default.IgnoreNullValues(true);
config.NewConfig<Schedule, ScheduleWrapper>().TwoWays()
                .Map(dest => dest.City, src => src.Start)
                .Map(dest => dest.City1, src => src.End);

I noticed this behavior also in other places where the explicit mapping is not defined.

Is there a setting to not create empty objects on destination when it not exists on source?

nikitabraganov avatar Apr 09 '24 13:04 nikitabraganov

I migrated from AutoMapper, and there I had the "AllowNullDestinationValues" property on the MapperConfiguration.

nikitabraganov avatar Apr 10 '24 08:04 nikitabraganov

@andrerav

nikitabraganov avatar Apr 10 '24 08:04 nikitabraganov