首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DTO的Map组件也是DTO

DTO的Map组件也是DTO
EN

Stack Overflow用户
提问于 2018-07-09 08:51:04
回答 1查看 66关注 0票数 1

这是我的类,它保存数据库数据:

代码语言:javascript
复制
public partial class PermissionGroup
{
    public int Id { get; set; }
    public string Name { get; set; }
    // other database properties

    public virtual ICollection<GroupActionPermission> GroupActionPermissions { get; set; }
}

那是我的dto:

代码语言:javascript
复制
public class PermissionGroupDTO
{
    public int Id { get; set; }
    public string Name { get; set; }

    public ICollection<GroupActionPermissionDTO> ActionPermissions { get; set; }
}

public class GroupActionPermissionDTO
{
    public int Id { get; set; }
    public int GroupId { get; set; }
    public int PermissionActionId { get; set; }

    public PermissionGroupDTO Group { get; set; }
}

现在,我正在绘制地图:

代码语言:javascript
复制
public IEnumerable<PermissionGroupDTO> GetGroups()
{
    return OnConnect<IEnumerable<PermissionGroupDTO>>(db =>
    {
        return db.PermissionGroups
        .Include(i => i.GroupActionPermissions)
        .ProjectTo<PermissionGroupDTO>()
        .ToList();
    });
}

我得到了PermissionGroupDTO的集合,它应该包含GroupActionPermissionDTO的集合,但是该集合保持为null。我的密码有什么问题吗?恐怕automapper可以从外键映射集合。

另外,这也是我的自动初始化器:

代码语言:javascript
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<PermissionGroup, PermissionGroupDTO>();
    cfg.CreateMap<GroupActionPermission, GroupActionPermissionDTO>();
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 09:09:33

我相信原因在这里,http://docs.automapper.org/en/stable/Queryable-Extensions.html

请注意,要使此特性工作,必须在映射中显式处理所有类型转换。

因此,这意味着您应该手动配置映射:

代码语言:javascript
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<PermissionGroup, PermissionGroupDTO>()
       .ForMember(dto => dto.ActionPermissions , conf => conf.MapFrom(ol => ol.GroupActionPermissions )));;
    cfg.CreateMap<GroupActionPermission, GroupActionPermissionDTO>();
});

顺便说一句,请注意字段的名称是不同的: GroupActionPermissions和ActionPermissions。这也是为什么automapper不自动映射它的原因,然后您应该使用我编写的手动配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51241492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档