gpt4 book ai didi

c# - Automapper 空属性

转载 作者:可可西里 更新时间:2023-11-01 08:56:05 25 4
gpt4 key购买 nike

我使用 Automapper 将我的对象映射到 dtos。

public class OrderItem : BaseDomain
{
public virtual Version Version { get; set; }
public virtual int Quantity { get; set; }
}




[DataContract]
[Serializable]
public class OrderItemDTO
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Guid { get; set; }
[DataMember]
public virtual int? VersionId { get; set; }
[DataMember]
public virtual string VersionName { get; set; }
[DataMember]
public virtual int Quantity { get; set; }

}

因此,当我拥有空版本的 OrderItem 时,我在以下位置收到异常:

 Mapper.Map<OrderItem, OrderItemDTO>(item)

Missing type map configuration or unsupported mapping.

最佳答案

如果没有看到您的映射代码,很难准确地说出哪里出了问题,但我猜您正在使用类似于以下的代码映射您的类型:

Mapper.CreateMap<OrderItem, OrderItemDTO>()
.ForMember(dest => dest.VersionId, options => options.MapFrom(orderitem => orderitem.Version.VersionId))
.ForMember(dest => dest.VersionName, options => options.MapFrom(orderitem => orderitem.Version.VersionName))
;

OrderItem.Version 为 null 时,上面的代码将失败。为防止这种情况,您可以检查传递给 ForMember 的委托(delegate)中是否为空:

Mapper.CreateMap<OrderItem, OrderItemDTO>()
.ForMember(dest => dest.VersionId, options => options.MapFrom(orderitem => orderitem.Version == null ? (int?) null : orderitem.Version.VersionId))
.ForMember(dest => dest.VersionName, options => options.MapFrom(orderitem => orderitem.Version == null ? null : orderitem.Version.VersionName))
;

关于c# - Automapper 空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3083654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com