我有以下实体类,它们从几乎相同的视图模型类映射:
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 }
一旦视图模型映射到实体,根节点的第一个子节点就是根节点,因此,当我遍历实体对象结构时,我得到一个无限循环。
任何人都知道为什么会这样,以及如何解决它?
非常感谢
史蒂夫
答案 0 :(得分:0)
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配置。
PS:我现在没有尝试过,但是因为我经常使用AutoMapper,所以我认为它应该可行。