私はそれがCircular referencesによって引き起こされることが判明周りのビットをグーグル後AutoMapper 4.はAutoMapper 5への移行 - 循環参照
で以前働いていたAutoMapper 5で何かの地図しようとしたとき、私はSystem.StackOverflowException
を抱えています。
AutoMapperのドキュメントは言う:以前
、AutoMapperはマッピングされたものの 追跡することにより、循環参照を処理し、すべてのマッピングに、かどうかを確認するために、ソース/デスティネーションオブジェクトのローカル ハッシュテーブルをチェックすることができますアイテムは既に にマップされています。このトラッキングは非常に高価で、循環マップの動作にPreserveReferencesを使用して オプトインする必要があります。 また、あなたがMAXDEPTH設定できます
// Self-referential mapping cfg.CreateMap<Category, CategoryDto>().MaxDepth(3); // Circular references between users and groups cfg.CreateMap<User, UserDto>().PreserveReferences();
をだから私は私のコードに.MaxDepth(3)
を追加し、それが再び機能するようになりました。
しかし、私はどのような本当の問題があると私は行を追加していたがundertandません:)
私の質問:
- カテゴリ/ CategoryDtoの点で「循環参照」を意味は何?
- 正確には何ですか
.MaxDepth()
?サンプルでなぜ3が使用されますか? .PreserveReferences()
とは何ですか?
深度を1に設定しました。まだスタックオーバーフロー...!今のような構成が私たちの話を聞いているような感じです... –