我有这些类
public class SemModel
{
public int SemId {get; set}
public string AreaId {get; set}
public string Longitude {get; set}
public string Latitude {get; set}
}
public class SemDto
{
public int SemId {get; set}
public AreaDto Area {get; set}
}
public class AreaDto
{
public string AreaId {get; set}
public string Longitude {get; set}
public string Latitude {get; set}
}
我希望能够将SemModel映射到SemDto,其中如果AreaId、经度和纬度为空,则SemDto。Area与具有null值的AreaId,经度和纬度属性相适应。
实际输出是我有一个SemDto,其中Area属性为空
这是我的地图
CreateMap<SemModel, SemDto>()
.ForMember(dest => dest.Area, opt => opt.MapFrom(src => new AreaDto
{
AreaId = src.AreaId,
Longitude = src.Longitude,
Latitude = src.Latitude
}));
给定:
new SemModel(){SemId =1, AreaId =null, Longitude=null, Latitude=null}
预期输出:
new SemDto(){SemId = 1, Area = new Area(){ AreaId =null, Longitude =null, Latitude =null}}
实际输出:
new SemDto(){SemId = 1, Area = null}
再次尝试1
.ForPath(dest => dest.Area.AreaId, opt => opt.MapFrom(src => src.AreaId))
.ForPath(dest => dest.Area.Longitude, opt => opt.MapFrom(src => src.Longitude))
.ForPath(dest => dest.Area.Latitude, opt => opt.MapFrom(src => src.Latitude));
仍然没有运气。哎呀!
cfg.CreateMap<SemDto, SemModel>().IncludeMembers(s=>s.Area).ReverseMap();
cfg.CreateMap<AreaDto, SemModel>().ForMember(d=>d.SemId, o=>o.Ignore()).ReverseMap();
它使用了镇定。ForPath
也起作用。