Automapper неправильно заполняет родительскую / дочернюю структуру - PullRequest
0 голосов
/ 31 мая 2011

У меня есть следующие классы сущностей, которые отображаются из практически идентичных классов моделей представлений:

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

1 Ответ

0 голосов
/ 31 мая 2011
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 очень часто, я думаю, что он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...