【问题标题】:EF Core Navigation Property and mapping profileEF Core 导航属性和映射配置文件
【发布时间】:2021-03-31 05:45:09
【问题描述】:

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

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

我该如何解决?

【问题讨论】:

  • 你解决了吗?

标签: entity-framework entity-framework-core navigation-properties


【解决方案1】:

错误似乎与Automapper 配置有关,而不是实体框架。您需要发布更详细的错误消息,但显然 Automapper 正在尝试映射 DocsVat 的属性 Contractor,但找不到它的映射配置。

要么在配置DocsVatDto =&gt; DocsVat 的映射时忽略该属性,要么创建一个映射来转换ContractorDto =&gt; Contractor

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 2012-03-27
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2020-02-23
    • 1970-01-01
    相关资源
    最近更新 更多