我有班级员工,其中包含复杂的物业部门。
public Class Employee
{
public int Id { get; set;}
public Department {get; set;}
}
public Class Department
{
public int Id {get;set;}
public string Name { get;set;}
}
我为两者创建地图 (考虑到上述两个类都有两个命名空间' source',' destination')
Mapper.CreateMap<source.Employee,destination.Employee>()
Mapper.CreateMap<source.Department,destination.Department>()
当我投影时。
empQueryable.Project().To<destination.Employee>();
如果我看到了NHProfiler 我发现它加载了实体部门 并创建查询
select ... from employee left outer join Department .....
我不知道为什么它会加载实体部门,它应该只是投影。
答案 0 :(得分:0)
我将在这里走出困境并假设“destination.Employee”包含对“destination.Department”的引用。当AutoMapper构建投影时,它的作用与“Mapper.Map”相同。它一直向下爬行目标类型,其属性和成员的属性。简而言之,它将构建一个Select表达式,如:
.Select(e => new destination.Employee {
Id = e.Id,
Department = new destination.Department {
Id = e.Department.Id,
Name = e.Department.Name
}
});
你有几个选择: