0

我正在使用 AutoMapper 的可查询扩展将 Entity Framework Core 实体映射到 DTO。

var appleTrees = context.AppleTrees
  .ProjectTo<AppleTreeDto>(mapper.ConfigurationProvider);

一些 DTO 具有如下接口属性:

public IFruitTreeDto
{
  List<IFruitDto> Fruits { get; set; }
}

public class AppleDto : IFruitDto
{
  ...
}

public AppleTreeDto : IFruitTreeDto
{
  public List<IFruitDto> Fruits { get; set; }
}

映射配置位于 AutoMapper 配置文件中:

CreateMap<EF.AppleTree, AppleTreeDto>();
CreateMap<EF.Apple, AppleDto>();

目前,我收到一个异常“缺少从 Apple 到 IFruitDto 的地图。使用 CreateMap' 创建。添加该映射后,我收到了一个异常,即 IFruitDto 无法实例化(这是有道理的,它是一个接口,而不是一个类)。

映射到 AppleTreeDto 时,如何告诉 Automapper 将 AppleDto 用于 Fruits 集合?这样做的最佳方式是什么?我应该为每个接口属性编写一个类型转换器吗?

4

1 回答 1

1

感谢卢西恩为我指明了正确的方向!通过进行此更改使其工作:

CreateMap<EF.Apple, IAppleDto>().As<AppleDto>();

我的对象模型实际上有点复杂,我实际上将在系统中有多个 IAppleDto 实现,所以我不知道这个修复是否会成立,但现在它正在工作。

于 2020-05-01T15:39:36.267 回答