Я использовал 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'sпрофили:
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))
}
}
Отображение Partner и PartnerStatus (PartnerStatusId - это связь) успешно выполнено. Но сопоставление IntegrationPartnerModel и Partner (PartnerStatusCode является отношением) не выполнено.
var integrationPartnerModel = new IntegrationPartnerModel {
PartnerStatusCode = "ABC"
//...
};
var newPartner = _mapper.Map<IntegrationPartnerModel, Partner>(integrationPartnerModel);
Свойство newPartner.PartnerStatusCode = "" (по умолчанию) и newPartner.PartnerStatus имеет значение null.
Что я делаю не так?