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 に答える