我有一个有两个班级的项目
在公司课程中,我有一个子对象InsuredCount 我想用一个条件填充InsuredCount,如下所示:
Mapper.CreateMap().ForMember(covm => covm.InsuredCount, co => co.MapFrom(x => x.Personnel.Count(y => y.InsuredStatus != InsuredStatus.NotCovered)))
public class Company : BusinessUnit
{
public DateTime RegisterDate { get; set; }
public string RegisterPlace { get; set; }
public virtual ICollection Personnel { get; set; }
}
这很有用!
但是当我用miniprofiler检查它时,它会执行每个公司人员的查询
我只是希望PersonnelCount有条件,我想用一个查询执行此操作
请建议我如何做到这一点
答案 0 :(得分:0)
您可以忽略InsuredCount的映射,并使用AfterMap
执行查询并设置属性。
修改(来自评论):
或者,由于您尝试执行的映射是在IQueryable上,请尝试使用Queryable Extensions中的Project().To<>
。
Project().To
有局限性,因此如果它不适合您,那么下一个最好的方法就是在您在评论中显示时实现查询而不使用AutoMapper。如果是这种情况(您在Project().To
中遇到限制),请提交bug,以便进行改进。