问题描述
我正在尝试将映射应用于导航属性,但出现错误。我有两个包含导航属性一对多的类。
public class Contractor : Entity<string>
{
public virtual Collection<DocsVat> DocsVats { get; set; }
}
public class DocsVat : Entity<Guid>
{
public Contractor Contractor { get; set; }
}
配置为:
public class DocsVatEntityConfiguration : EntityTypeConfigurationBase<DocsVat>
{
protected override void ConfigureEntity()
{
Builder.ToTable("DocsVat","VAT");
Builder.HasKey(p => p.Id);
Builder.HasOne(p => p.Contractor).WithMany(p=>p.DocsVats).HasForeignKey(p =>
p.ContractorNo).Isrequired();
Builder.Property(p => p.Id).HasColumnName("Id").Isrequired();
}
}
和映射配置文件:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Entities.DocsVat,DocsVatDto>();
CreateMap<DocsVatDto,Entities.DocsVat>();
CreateMap<FnPurchaseDetail,DocsVatDto>();
CreateMap<Entities.DocsVat,DocsVatDto>().ForMember(dto => dto.Contractor,conf =>
conf.MapFrom(ent => ent.Contractor.Id));
}
}
我遇到的错误:
Error mapping types.
Mapping types:
DocsVatDto -> DocsVat
###.applicationservices.Doc.DocsVAT.Dto.DocsVatDto -> ###.Entities.DocsVat
Type Map configuration:
DocsVatDto -> DocsVat
###.applicationservices.Doc.DocsVAT.Dto.DocsVatDto -> ###.Entities.DocsVat
Destination Member:
Contractor
我该如何解决?
解决方法
错误似乎与 Automapper 配置有关,而不是实体框架。您需要发布更详细的错误消息,但显然 Automapper 正在尝试映射 Contractor
的属性 DocsVat
,但找不到它的映射配置。
要么在配置 DocsVatDto => DocsVat
的映射时忽略该属性,要么创建用于转换 ContractorDto => Contractor
的映射