自动映射程序错误地填充父/子结构

本文关键字:结构 填充 映射程序 错误 | 更新日期: 2023-09-27 17:57:59

我有以下实体类,它们是从几乎相同的视图模型类映射而来的:

public class Node
{
    public IList<Node> Children { get; set; }
    public Node Parent { get; set; }
    public string Text { get; set; }
}
public class Tree
{
    public Node Root { get; set; }
}

使用以下视图模型结构

Tree 
    -> Root
        -> Children { node1, node2 }

一旦视图模型映射到实体,根节点的第一个子节点就是根节点,因此,当我遍历实体对象结构时,我会得到一个无限循环。

有人知道为什么会发生这种情况以及如何解决吗?

非常感谢

Steve

自动映射程序错误地填充父/子结构

Mapper.CreateMap<NodeViewModel, Node>()
    .ForMember(dto => dto.Children, 
               opt => opt.MapFrom(src => src.Children.Select(nodevm => Mapper.Map<NodeViewModel, Node>(nodevm)).ToList()))
    .ForMember(dto => dto.Parent,
               opt => opt.MapFrom(src => Mapper.Map<NodeViewModel, Node>(src.Parent)))
    .ForMember(dto => dto.Text,
               opt => opt.MapFrom(src => src.Text));

类似的东西可以作为AutoMapper配置。

附言:我现在还没有尝试,但由于我经常使用AutoMapper,我认为它应该可以工作。