【问题标题】:AutoMapper Flattening out nested jsonAutoMapper 展平嵌套的 json
【发布时间】:2021-03-10 09:29:36
【问题描述】:

我正在尝试使用 Automapper 展平 json 结果,但我收到一条错误消息:Missing type map configuration or unsupported mapping

在我的项目中,我安装了 AutoMapper 和 AutoMapper 依赖注入包。

我的 Startup.cs 有以下调用:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAutoMapper(typeof(Startup));
}

我已按如下方式设置我的映射配置文件:

public class MappingProfile : Profile
{
    public MappingProfile()
    {
        CreateMap<JiraTicket, JiraDto>();
    }
}

我想要展平的模型和 DTO 应该展平为:

public class JiraTicket
{
    [Key]
    public int TicketId { get; set; }
    public string id { get; set; } 
    public string self { get; set; }
    public string key { get; set; } 
    public JiraTicketFields fields { get; set; }
}
public class JiraDto
{
    public int Id { get; set; }
    public string Creator { get; set; }
    public string Description { get; set; }
    public string Key { get; set; }
    public string Self { get; set; }
}

大部分 DTO 变量都在 `JiraTicketFields 中。

最后,我使用以下代码行调用我的仓库:

public async Task<IEnumerable<JiraDto>> GetAll()
{
    var tickets =  _jiraRepo.GetAll().ToList();
    var result = (IEnumerable<JiraDto>)_mapper.Map<JiraDto>(tickets);
    return result;
}

当我的项目到达var result... 行时,就会引发错误。我错过了什么?

【问题讨论】:

  • 您的 MappingProfile 和 Startup 是否在同一个程序集中?

标签: c# .net-core entity-framework-core automapper


【解决方案1】:

您创建了一个配置文件,告诉 Automapper 如何将单个 JiraTicket 转换为单个 JiraDto,但我认为问题在于您正在尝试将 IEnumerable&lt;JiraTicket&gt; 映射到单个 JiraDto,并且Automapper 不知道该怎么做。

您可能想要做的(如果我理解正确的话)是将IEnumerable&lt;JiraTicket&gt; 映射到IEnumerable&lt;JiraDto&gt;。然后,你必须这样做:

public async Task<IEnumerable<JiraDto>> GetAll()
{
    var tickets =  _jiraRepo.GetAll().ToList();
    var result = _mapper.Map<IEnumerable<JiraDto>>(tickets);
    return result;
}

【讨论】:

    【解决方案2】:

    调用此函数将 JiraTicket 列表转换为 JiraDtos 的 IEnumerable

    var result = mapper.Map<IEnumerable<JiraDto>>(tickets);
    

    AutoMapper 中的转换是通过泛型参数完成的,而不是通过显式转换

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2016-10-06
      • 2021-09-05
      • 1970-01-01
      • 2021-07-14
      • 2021-10-19
      相关资源
      最近更新 更多