0

automapper を使用して、以下の Employee ドメイン オブジェクトを EmployeeViewModel にマップしようとしています。

Id、FirstName、LastName などのプロパティをマップできます。ただし、Subordinates プロパティをマップできません。

使用済みMapper.CreateMap<Employee, EmployeeViewModel>()ですが、Subordinates プロパティをマップする方法がわかりません。

以下のクラスをマッピングする方法を教えてください。

public class Employee
{
  public int Id {get; set;}
  public int FirstName{get; set;}
  public int LastName{get; set;}
  public Employee Manager{get; set;}
}

public class EmployeeViewModel
{
  public int Id {get; set;}
  public int FirstName{get; set;}
  public int LastName{get; set;}
  public List<Employee> Subordinates {get; set;}
}

見る

@helper ShowTree(IEnumerable<EmployeeViewModel> emp)
{
<ul>
    @foreach (var e in emp)
    {
        <li>
            @e.FirsyName
            @if (e.Children.Any())
            {
                @ShowTree(e.Children)
            }
        </li>
    }
</ul>
}

ありがとう -ナレン

4

1 に答える 1

0

Employee エンティティには Subordinates という List プロパティが含まれていないため、自動的にマップされません。を subordinates プロパティにマップするには、viewmodel の subordinates プロパティを同じタイプの manager という Employee オブジェクトに変更する必要があります。

public class Employee()
{
    public int Id {get; set;}
    public int FirstName{get; set;}
    public int LastName{get; set;}
    public Employee Manager {get; set;} 
}

public class EmployeeViewModel()
{
    public int Id {get; set;}
    public int FirstName{get; set;}
    public int LastName{get; set;}
    public Employee Manager {get; set;} 
}

しかし、上から見ると、ビューがドメインの Employee オブジェクトに直接似ているため、オブジェクトをマッピングしても意味がありません。ビューを表すためにドメイン エンティティを変更する必要がある場合にのみ、ビューモデルを使用してください。

あなたが何をしようとしているのかは不明です。あなたの見解を表示すれば、私はもっと支援することができます。

于 2013-03-11T10:05:54.283 に答える