0

我正在尝试使用自动映射器将以下 Employee 域对象映射到 EmployeeViewModel。

我能够映射诸如 Id、FirstName、LastName 之类的属性。但无法映射下属属性。

使用Mapper.CreateMap<Employee, EmployeeViewModel>()过,但不知道如何映射下属属性。

任何人都可以帮助如何映射以下课程。

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 属性,所以它不会被自动映射。要将 映射到从属属性,您需要将视图模型从属属性更改为相同的类型,即一个名为 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 回答