2016-07-29 13 views
1

Automapperをバージョン3から4.2.1までの複数のプロジェクトで長年使用していましたが、私たちはエンティティをDTOにマッピングしたり、バージョン5.0.2にアップグレードした後突然。循環参照を持つオブジェクトはすべて、MapメソッドでSystem.StackOverflowExceptionをスローし、プリミティブプロパティを持つ他のオブジェクトは正しくマップされました。バージョン4.2.1にロールバックして正常に動作します。Automapperをバージョン4.x.xから5にアップグレードした後でSystem.StackOverflowExceptionを取得する

マッパーが循環参照を処理できるようにするための構成が必要です。または、循環参照を間違った方法で使用しています(廃止予定)。

答えて

1

CreateMapメソッドを使用してマップを作成すると、循環参照の参照を保持する別のメソッドPreserveReferencesを呼び出すだけでよいことがわかりました。私たちのコードは次のようになります:

_config = new AutoMapper.MapperConfiguration(cfg => 
{ 
    foreach(var mapping in _mappings) 
    { 
     cfg.CreateMap(mapping.Source, mapping.Destination).PreserveReferences(); 
    } 
}); 

_mapper = _config.CreateMapper(); 

この小さな変更は、私たちにとって災害を起こそうとしていました!幸いにも私たちはその解決策を見つけました。この問題についてはhereというディスカッションがあります。

関連する問題