0

所以有一个模型对象TreeNode

Public Class TreeNode{
  Public int NodeId {get;set;}
  Public String Name {get;set;}
  Public int ParentId {get;set;}
  Public TreeNode Parent {get;set;}
  Public List<TreeNode> Children {get;set;}
}

该结构由使用邻接列表模式的数据库提供支持。我正在使用带有AutoMapper的 WCF 服务来填充我的模型类。

我想做这样的事情:

public static void ConfigureMappings()
{
  Mapper.CreateMap<TreeNodeDto, Taxonomy>()
  .AfterMap((s, d) =>
  {  
     //WCF service calls to get parent and children
     d.Children =  Mapper.Map<TreeNodeDto[], TreeNode[]>(client.GetTreeChildren(s)).ToList();
     d.Parent = Mapper.Map<TreeNodeDto, TreeNode>(client.GetTreeParent(s));
  });
}

但显然这会导致无限循环(如果我只映射孩子,它确实有效)。有什么方法可以使用 AutoMapper 填充我的树结构?

4

1 回答 1

0

我找到了这个部分解决方案。起初我认为这是我正在寻找的东西,但经过进一步检查,它只有在你从树顶开始时才有效。如果您从中间开始,它不会填充父节点。

如何使用 AutoMapper 将父引用分配给子属性

public static void ConfigureMappings()
{
  Mapper.CreateMap<TreeNodeDto, Taxonomy>()
  .AfterMap((s, d) =>
  {  
     //WCF service calls to get parent and children
     d.Children =  Mapper.Map<TreeNodeDto[], TreeNode[]>(client.GetTreeChildren(s)).ToList();
    foreach( var child in d.Children)
    {
       child.Parent = d;
    }
}
于 2013-02-08T19:17:33.550 回答