5

私のプロジェクトでは、から1対多の関係がありClient -> Projectsます。そのため、私の見解の1つでは、そのクライアントに属するすべてのプロジェクトを表示しようとしています。だから私はIEnumerable<ProjectDetailsViewModel>すべてのクライアントプロジェクトを表すを持っています。

問題は、ProjectDetailsViewModelが、ClientDetailsViewModel次に、IEnumerable<ProjectDetailsViewModel>などがあり、同一のエンティティの無限のループを作成することです。

これは、その.ForMember()でMaxDepth()メソッドを使用するのが適切な場合ですか?もしそうなら、私はこの場合それをどのように使用しますか、そうでない場合、解決策は何ですか?

でMaxDepth(1)を試しましたがClient、これによりStackOverflow例外が防止されますが、そのクライアントのビューモデルにデータが保持されません。

4

1 に答える 1

5

The problem was that I explicitly called AutoMapper from with the AutoMapConfig as such:

.ForMember(x => x.Client, opt => opt.MapFrom(src =>
    AutoMapper.Mapper.Map<ClientDetailsViewModel>(src.Client)))

If I just define it as:

.ForMember(x => x.Client, opt => opt.MapFrom(src => src.Client))

AutoMapper will know to stop after 1 recursion, and as I already have a map from Client -> ClientDetailsViewModel there is no problem.

于 2013-01-14T14:12:59.440 に答える