Automapper 2 个源字段映射到 1 个目标字段
Automapper 2 source fields mapped to 1 destination field
我有 2 个 类 需要映射:
class1 有字段 PaymentState 和 PaymentStateId
public int PaymentStateId { get; set; }
[ForeignKey(nameof(PaymentStateId))]
[InverseProperty(nameof(PaymentStateEntity.OrderEntities))]
public virtual PaymentStateEntity PaymentState { get; set; }
class2 具有同名字段 PaymentState 但为枚举类型
public PaymentState PaymentState { get; set; }
将 class1 映射到 class2 时出现无法映射字段 PaymentState 的错误:
Unable to create a map expression from
class1.PaymentState (Entities.PaymentStateEntity) to PaymentState.PaymentState (Enums.PaymentState)
Mapping types:
class1-> class2
Destination Member:
PaymentState
已尝试自定义映射字段,但我想现在有 2 个字段要映射到 1 个目标字段这一事实造成了问题
CreateMap<class1, class2>()
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => src.PaymentStateId))
忽略一个源字段而让另一个源字段映射到目标字段的方法是什么?
我认为错误原因不是 2 个字段映射到 1 个目的地。可能是因为目标和源之间的类型不同。您应该检查日志错误是什么。
但是你可以尝试使用
CreateMap<class1, class2>()
.ForMember(dest => dest.PaymentState, opt => opt.Ignore())
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => src.PaymentStateId))
此外,您可以通过将它们的项目设置为具有相同的值来转换 2 个枚举
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => (PaymentState)((int)src.PaymentState)))
我有 2 个 类 需要映射: class1 有字段 PaymentState 和 PaymentStateId
public int PaymentStateId { get; set; }
[ForeignKey(nameof(PaymentStateId))]
[InverseProperty(nameof(PaymentStateEntity.OrderEntities))]
public virtual PaymentStateEntity PaymentState { get; set; }
class2 具有同名字段 PaymentState 但为枚举类型
public PaymentState PaymentState { get; set; }
将 class1 映射到 class2 时出现无法映射字段 PaymentState 的错误:
Unable to create a map expression from
class1.PaymentState (Entities.PaymentStateEntity) to PaymentState.PaymentState (Enums.PaymentState)
Mapping types:
class1-> class2
Destination Member:
PaymentState
已尝试自定义映射字段,但我想现在有 2 个字段要映射到 1 个目标字段这一事实造成了问题
CreateMap<class1, class2>()
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => src.PaymentStateId))
忽略一个源字段而让另一个源字段映射到目标字段的方法是什么?
我认为错误原因不是 2 个字段映射到 1 个目的地。可能是因为目标和源之间的类型不同。您应该检查日志错误是什么。 但是你可以尝试使用
CreateMap<class1, class2>()
.ForMember(dest => dest.PaymentState, opt => opt.Ignore())
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => src.PaymentStateId))
此外,您可以通过将它们的项目设置为具有相同的值来转换 2 个枚举
.ForMember(dest => dest.PaymentState, opt => opt.MapFrom(src => (PaymentState)((int)src.PaymentState)))