Automapper null属性

我使用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; } } 

因此,当我使用null版本的OrderItem时,我得到一个例外:

  Mapper.Map(item) Missing type map configuration or unsupported mapping. 

如果没有看到你的映射代码,很难确切地说出了什么问题,但我的猜测是你使用类似于以下代码来映射你的类型:

 Mapper.CreateMap() .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的委托中检查null:

 Mapper.CreateMap() .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)) ;