Asp.net mvc 4 具有自引用类的映射

Asp.net mvc 4 具有自引用类的映射,asp.net-mvc-4,automapper,Asp.net Mvc 4,Automapper,我正在尝试使用automapper将下面的Employee域对象映射到EmployeeViewModel 我能够映射属性,如Id、FirstName、LastName。但无法映射下属属性 使用了Mapper.CreateMap(),但不知道如何映射从属属性 任何人都可以帮助如何映射下面的类 public class Employee { public int Id {get; set;} public int FirstName{get; set;} public int LastN

我正在尝试使用automapper将下面的Employee域对象映射到EmployeeViewModel

我能够映射属性,如Id、FirstName、LastName。但无法映射下属属性

使用了
Mapper.CreateMap()
,但不知道如何映射从属属性

任何人都可以帮助如何映射下面的类

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;}
}
公共类员工
{
公共int Id{get;set;}
public int FirstName{get;set;}
public int LastName{get;set;}
公共员工经理{get;set;}
}
公共类EmployeeViewModel
{
公共int Id{get;set;}
public int FirstName{get;set;}
public int LastName{get;set;}
公共列表下属{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>
}
@helper ShowTree(IEnumerable emp)
{
    @foreach(emp中的变量e) {
  • @e、 FirsyName @if(如Children.Any()) { @ShowTree(如儿童) }
  • }
}
谢谢,
-Naren

因为员工实体不包含名为“下属”的列表属性,所以它不会自动映射。要将映射到“下属”属性,您需要将viewmodel下属属性更改为同一类型,即名为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;} 
}
但是从上面看,没有点映射对象,因为您的视图直接类似于您的域雇员对象。仅当需要更改域实体以表示视图时,才使用viewmodel


现在还不清楚你想做什么,如果你展示你的观点,我可以提供更多帮助。

你能详细说明一下吗。向我们显示您的自动映射配置,如果有错误,请说明错误所在?我使用了Mapper.CreateMap();,但是我不知道如何映射下属属性。您好,我正在尝试在我的视图页面上构建树视图,我正在尝试将Employee转换为EmployeeViewModel,以便轻松进行树视图转换。@Narendra V Yes然后更新您的问题,包括您的视图页面编码。我还可以看到加载视图模型并将其传递给视图的操作。