【问题标题】:Automapper Object with inside list of object to primitive mapping具有内部对象列表到原始映射的 Automapper 对象
【发布时间】:2018-12-31 05:36:46
【问题描述】:

我正在尝试为 automapper 创建地图以让我映射这些实体

实体

public class Entity 
{
    ...
    public List<NavigationEntity> Navs { get; set; }
}

public class NavigationEntity   
{
    public int Id { get; set; }
}

需要使用实体创建的 DTO

public class EntityDto 
{
    ...
    public List<int> NavIds { get; set; }
}

这似乎不能胜任!什么可以做这项工作?

CreateMap<Entity, EntityDto>().ReverseMap();
CreateMap<NavigationEntity, int>().ConstructUsing(x => x.Id);

编辑

尝试添加
CreateMap,List>();

但它仍然没有映射

【问题讨论】:

  • 我认为对我没有帮助,我将编辑以显示差异
  • 完整的错误信息应该告诉你问题是什么。
  • 没有错误信息,只是没有映射 NavigationEntity

标签: automapper


【解决方案1】:

首先,您应该将public List&lt;NavigationEntity&gt; Navs { get; set; }public List&lt;int&gt; NavIds { get; set; } 重命名为相同的名称。如果仍然无法正常工作,请尝试将 ConstructUsing 更改为 ConvertUsing。如果您需要 Entity 到 EntityDTO 的 reverseMap,您还应该添加

CreateMap<int, NavigationEntity>().ConvertUsing(x => new NavigationEntity { Id = x });

最终代码

public class Entity 
{
    ...
    public List<NavigationEntity> Navs { get; set; }
}

public class NavigationEntity   
{
    public int Id { get; set; }
}

public class EntityDto 
{
    ...
    public List<int> Navs { get; set; }
}

...
CreateMap<Entity, EntityDto>().ReverseMap();
CreateMap<NavigationEntity, int>().ConvertUsing(x => x.Id);
CreateMap<int, NavigationEntity>().ConvertUsing(x => new NavigationEntity { Id = x });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多