c# - 如何将两个对象(源)映射到不同属性的一个目标
问题描述
我一直在使用EF Core (2.2)
和Automapper
。我有一些对象:两个实体(Partner、PartnerStatus)和集成模型(IntegrationPartnerModel)。我需要在不同的属性上将两个对象(Partner、IntegrationPartnerModel)映射到一个(PartnerStatus)。
以下是它们中的每一个的定义:
public class Partner {
public int PartnerId { get; set; }
public string Name { get; set; }
public string Comment { get; set; }
// Relation Partner and PartnerStatus
public int PartnerStatusId { get; set; }
// Navigation property to PartnerStatus
public PartnerStatus PartnerStatus { get; set; }
// Relation IntegrationPartnerModel and PartnerStatus
public string PartnerStatusCode { get; set; }
}
public class PartnerStatus {
public int Id { get; set; }
public string Name { get; set; }
// Status code from integration service
public string Code { get; set; }
}
public class IntegrationPartnerModel {
public string Name { get; set; }
// relation to PartnerStatus entity (Code property)
public string PartnerStatusCode { get; set; }
// Navigation property to PartnerStatus entity
public PartnerStatus PartnerStatus { get; set; }
// etc
}
我制作了两个 Automapper 的个人资料:
public class PartnerStatusProfile : Profile {
public PartnerStatusProfile()
{
CreateMap<PartnerStatus, Partner>()
.ForMember(p => p.PartnerStatusId, o => o.MapFrom(s => s.Id))
.ReverseMap();
CreateMap<PartnerStatus, IntegrationModel>()
.ForMember(p => p.PartnerStatusCode, o => o.MapFrom(s => s.Code))
.ReverseMap();
}
}
public class PartnerProfile : Profile
{
public PartnerProfile() {
CreateMap<IntegrationPartnerModel, Partner>()
.IncludeMembers(integration => integration.PartnerStatus)
.ForMember(p => p.PartnerStatusCode, o => o.MapFrom(p => p.PartnerStatusCode))
}
}
映射合作伙伴和PartnerStatus(PartnerStatusId是关系)是成功的。
但是 IntegrationPartnerModel 和合作伙伴的映射(PartnerStatusCode 是关系)失败。
var integrationPartnerModel = new IntegrationPartnerModel {
PartnerStatusCode = "ABC"
//...
};
var newPartner = _mapper.Map<IntegrationPartnerModel, Partner>(integrationPartnerModel);
属性 newPartner.PartnerStatusCode = ""(默认)并且 newPartner.PartnerStatus 为空。
我究竟做错了什么?
解决方案
推荐阅读
- java - 错误:无法找到或加载主类 application.Main 原因:java.lang.NoClassDefFoundError: javafx/application/Application JDK 11
- python - 使用外部列表过滤具有列表作为列值的数据框并删除外部人员
- groovy - 请问如何运行包含其他 groovy 文件的 groovy 文件?
- cordova - 如何删除使用 phonegap-plugin-contentsync 下载的缓存文件?
- mysql - 加入群组
- html - 内容可编辑 div 复制粘贴限制
- javascript - 单击复选框时的数组索引值 - JavaScript
- aframe - 三.laser-controls组件的js源码
- html - 用纯css画线动画左、下、左
- cryptography - 我得到了这个二维码,这个来自二维码的随机文本是什么意思?