EF Core 导航属性和映射配置文件

问题描述

我正在尝试将映射应用于导航属性,但出现错误我有两个包含导航属性一对多的类。

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 的映射