1

私は2つのクラスを持つプロジェクトを持っています

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; }
}

これはうまくいきました!

しかし、ミニプロファイラーで確認すると、各会社の人事に対してクエリが実行されます

条件付きの PersonnelCount が必要で、これを 1 つのクエリで実行したい

どうすればそれができるか教えてください

4

1 に答える 1

0

InsuredCount のマッピングを無視しAfterMap、クエリを実行してプロパティを設定するために使用できます。

編集(コメントから):

または、実行しようとしているマッピングが IQueryable にあるため、Project().To<>from Queryable Extensionsを使用してみてください。

Project().Toには制限があるため、うまくいかない場合は、コメントに示されているようにクエリを具体化し、AutoMapper を使用しないことをお勧めします。このような場合 ( の制限に達した場合Project().To)、改善できるようにバグを報告してください。

于 2013-07-16T13:48:06.273 に答える