【发布时间】:2021-09-14 02:19:39
【问题描述】:
您好,auomapper 有问题,我尝试使用 Automapper.Mapper(src, dest) 而不会在映射后丢失 dest 中的值。
我有一个类,其中包含如下对象列表
public class UpdateShipmentDetailDto
{
public bool IsDocument { get; set; }
public List<UpdateItemDetailDto> ItemDetails { get; set; } = new();
}
我想映射到哪个
public class SCS_OUT_Manifest
{
public Guid ManifestId { get; set; }
public ICollection<SCS_OUT_ManifestItem> SCS_OUT_ManifestItems { get; set; } = new List<SCS_OUT_ManifestItem>();
}
UpdateItemDetailDto 类如下所示
public class UpdateItemDetailDto
{
public Guid ItemId { get; set; }
public string ItemDescription { get; set; }
public int Qty { get; set; }
public Guid UnitsId { get; set; }
public decimal ItemValue { get; set; }
}
SCS_OUT_ManifestItem 类看起来像
public class SCS_OUT_ManifestItem
{
public Guid ItemId { get; set; }
public Guid ManifestId { get; set; }
public string ItemDescription { get; set; }
public int Qty { get; set; }
public Guid UnitsId { get; set; }
public decimal ItemValue { get; set; }
}
我正在执行如下所示的映射,它从 ItemDetails(它是一个列表)映射到 SCS_OUT_ManifestItems(它也是一个 ICollection)。
_mapper.Map(updateShipmentDetailDto.ItemDetails, manifest.SCS_OUT_ManifestItems);
映射完成后的问题,目标集合中的属性设置为默认值。
例如,SCS_OUT_ManifestItem 中的ManifestId manifest.SCS_OUT_ManifestItems 不在updateShipmentDetailDto.ItemDetails 中,它被设置为其默认的Guid 值00000000-0000-0000-0000-000000000000。
但是如果我像下面这样在循环中运行它。
foreach (var item in manifest.SCS_OUT_ManifestItems)
{
_mapper.Map(updateShipmentDetailDto.ItemDetails.Single(s => s.ItemId == item.ItemId), item);
}
请帮忙!提前致谢
【问题讨论】:
标签: c# asp.net-core automapper