0

AutoMapper で奇妙な問題が発生しています。

私が次のことをしたら

//Get my entities from EF repository
var movements = _movementRepository.AllIncluding(movement => movement.Asset, movement => movement.Job,movement => movement.Asset.MinorEquipmentType);
var model = new List<AssetMovementDetail>();
foreach (var assetMovementDetail in movements)
{
     model.Add(Mapper.Map<AssetMovementDetail>(assetMovementDetail));
}

これは完全に機能し、期待どおりの結果が得られます。

あるいは、次のようにモデルを生成するように変更した場合:

var model = Mapper.Map<List<AssetMovementDetail>>(movements);

結果は異なり、結果の総数は同じですが、結果の多くは互いに重複しており、他の結果は欠落しています。私は何か間違ったことをしていますか?これは、それが機能するはずの方法ではありません。

4

1 に答える 1

1

1つのリストから自動的にマッピングを取得するのではなく、リストをリストにマッピングする必要があります...したがって、予期しない動作です。私の言いたいことを理解するには、次の投稿をご覧ください: Automapper を使用したリストのマッピング

編集

あちらで回答されたのと同じ問題を抱えているのではないでしょうか? AutoMapper map の foreach での余分な反復。見てください、多分それは解決しますか、それともあなたにいくつかのアイデアを与えますか?

また、最初の linq ステートメントでの遅延 (遅延) 読み込みに関連している可能性もあります。

編集 2

これは、あなたがやろうとしていることを成功させる私自身のプロジェクトのコードです:

var dbResources = _db.GetResourcesForBusiness();
var vmResources = Mapper.Map<IEnumerable<DBResource>, IEnumerable<VMResource>>(dbResources);

ワン ショット ディールの形式は、使用している形式とは少し異なります。これを使用してみて、うまくいくかどうかを確認してください。

お役に立てれば!

于 2012-09-27T13:36:24.967 に答える