c# - AutoMapper - 如何将复杂对象映射到更简单的模型
问题描述
我想要类的映射Origin.CityId
和 Origin.StateId
属性以及
类 Itinerary
的 属性 。OriginCityId
OriginStateId
ItineraryModel
前任: Itinerary itinerary = Mapper.Map<Itinerary>(ItineraryModel);
我的视图模型
public class ItineraryModel : BaseModel
{
public int OriginCityId { get; set; }
public int OriginStateId { get; set; }
public bool Published { get; set; }
}
我的实体
public class Itinerary : BaseEntity
{
public City Origin { get; set; }
public bool Published { get; set; }
}
我尝试过的映射
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<ItineraryModel, Itinerary>()
.ForPath(x => x.Origin.CityId, opt => opt.MapFrom(src => src.OriginCityId))
.ForPath(x => x.Origin.StateId, opt => opt.MapFrom(src => src.OriginStateId))
.ReverseMap();
}
}
我也想,.ReverseMap()
但找不到正确的语法。
解决方案
您需要添加两个映射以映射到Itenerary
CreateMap<ItineraryModel, City>()
.ForMember(city => city.CityId, expression => expression.MapFrom(itineraryModel => itineraryModel.OriginCityId))
.ForMember(city => city.StateId, expression => expression.MapFrom(itineraryModel => itineraryModel.OriginStateId));
CreateMap<ItineraryModel, Itinerary>()
.ForMember(itinerary => itinerary.Origin, expression => expression.MapFrom(itineraryModel => itineraryModel));
同样,如果需要,您可以手动定义反向映射。
顺便说一句ReverseMap()
,作者不推荐
推荐阅读
- ios - Chat TableView Cell:一个 UIView,其大小应取决于较大的包含标签
- javascript - Chrome 性能监视器中每种颜色的含义是什么?
- docker - docker-compose 容器上的卷为空或有奇怪的内容
- db2 - Db2 zos 更新表中的值集
- c# - C# 正则表达式将捕获多组字符之间的选择
- machine-learning - WEKA 更改预测中的小数位数
- laravel - 按相关表结果的计数对数组进行排序
- java - 如何将 vaadin 8 网格导出到 csv
- go - 如何检查一个值是否实现了一个接口
- python-3.x - 当我尝试在模式中提交表单时收到错误的请求错误