我正在尝试使用automapper将以下Employee域对象映射到EmployeeViewModel。
我可以映射像Id,FirstName,LastName这样的属性。但无法映射下属属性。
使用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>
}
谢谢, -Naren
答案 0 :(得分:0)
因为Employee实体不包含名为Subordinates的List属性,所以它不会自动映射。要映射到下属属性,您需要将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;}
}
但是,从上面看,没有必要映射对象,因为您的视图直接类似于您的域Employee对象。如果您需要更改域实体以表示视图,请仅使用视图模型。
目前还不清楚你要做什么,如果你显示你的观点,那么我将能够提供更多帮助。