1

我有一个有两个类的项目

在 Company 类中,我有一个子对象 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,我想用一个查询来执行它

请建议我如何做到这一点

4

1 回答 1

0

您可以忽略 InsuredCount 的映射,并使用它AfterMap来执行查询和设置属性。

编辑(来自评论):

或者,由于您尝试在 IQueryable 上执行映射,请尝试使用Project().To<>from Queryable Extensions

Project().To有限制,所以如果它不适合你,下一个最好的办法是实现你在评论中显示的查询,而不是使用 AutoMapper。如果是这种情况(您在 中遇到了限制Project().To),请提交错误,以便改进。

于 2013-07-16T13:48:06.273 回答