c# - 自动映射器映射属性保持为空
问题描述
似乎我无法让嵌套映射正常工作
阅读后:http ://docs.automapper.org/en/stable/Nested-mappings.html应该很容易。
我有以下课程:
public class CatalogVehicle : VehicleBase
{
public string Type { get; set; }
public int Year { get; set; }
public VehicleSpecification VehicleSpecification { get; set; } = new VehicleSpecification();
} //removed some properties for readability
public class VehicleSpecification
{
public Engine Engine { get; set; } = new Engine();
public Transmission Transmission { get; set; } = new Transmission();
public int Co2 { get; set; }
public int Weight { get; set; }
} //again removed some more properties (all classes)
映射:
CreateMap<VehicleAndQuote, CatalogVehicle>()
.ForMember(catalogVehicle => catalogVehicle.Id,
source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Quote.QuotationIdentifier.Trim()))
.ForMember(catalogVehicle => catalogVehicle.Make,
source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.VehicleMakeName))
.ForMember(catalogVehicle => catalogVehicle.Model,
source => source.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.VehicleModelTypeName))
.ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, opt => opt.Ignore()); //removed some lines
CreateMap<VehicleAndQuote, VehicleSpecification>()
.ForMember(vehicleSpecification => vehicleSpecification.Co2, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Co2.ToSafeInt()))
.ForMember(vehicleSpecification => vehicleSpecification.Weight, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Weight.ToSafeInt()))
.ForMember(vehicleSpecification => vehicleSpecification.Rating, opt => opt.Ignore())
.ForMember(vehicleSpecification => vehicleSpecification.Tyres, opt => opt.Ignore()) //removed some lines as well
CreateMap<VehicleAndQuote, Engine>()
.ForMember(engine => engine.Displacement, opt => opt.Ignore())
.ForMember(engine => engine.Fuel, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.FuelType))
.ForMember(engine => engine.Power, src => src.ResolveUsing(GetEnginePower))
.ForMember(engine => engine.Cylinders, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote.Vehicle.Cylinders));
//etc
如您所见,我忽略了某些属性,否则我会收到未映射的属性错误。阅读文章后,它应该可以工作,只要您映射了所有类。
我正在调用这样的方法:var vehicle = _mapper.Map<VehicleAndQuote, CatalogVehicle>(vehicleAndQuote);
<=这是包含所有信息的大类
所以从映射VehicleAndQuote
到CatalogVehicle
-first 几个属性可以正常工作,但是映射到VehicleSpecification
我的问题。那一个不会被正确填充......
有人看到问题了吗?
解决方案
您需要为嵌套类配置映射而不是忽略它们:
.ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, src => src.MapFrom(vehicleAndQuote => vehicleAndQuote);
代替
.ForMember(catalogVehicle => catalogVehicle.VehicleSpecification, opt => opt.Ignore());
其他映射也是如此
推荐阅读
- r - Cowplot plot_grid() : 图中的标题
- python - 如何在控制台中发送 EOF 指示器
- python - 添加天数后如何获取日期:TypeError:timedelta天数组件不支持的类型:系列
- c# - 使用 Task.ContinueWith 排队处理 H.264 帧的任务会导致内存问题
- python - 使用 try/except 在 jupyter 笔记本中存储或读取存储的变量
- kubernetes - ActiveMQ 主题消息卡住,故障后批量重新发送
- angular - 如何将 ngx-transalate json 文件传递给组件
- ios - 将文本写入透明 UIImage
- delphi - TIdTcpClient 已转移 LastCmdResults
- html - AWS websocket 和 cloudfront:WebSocket 握手:意外响应代码:426