2016-05-14 10 views
0

私はAutoMapperをEntity Framework v6のアプリケーションでORMとして使用しています。Entity FrameworkマッピングでのAutoMapperバインドの問題

私が問題とするのは、LINQ to Entitiesを使って単一のエンティティで1つのクエリを実行し、AutoMapperでDTOを使用してエンティティデータをマッピングすると、データバインディング中に同時に多くのクエリが実行されるということです。

この問題を回避する方法を教えてください。

答えて

0

これは予想される動作です。 AutoMapperは宛先タイプを調べるだけで、一致するプロパティをソースタイプからマップすることを覚えておいてください。あなたはいくつかのプロパティを遅延マップされたくない場合は、いくつかのオプションがあります:

  1. を先モデル
  2. 使用からプロパティを削除熱心プロパティ
  3. AutoMapperで使用LINQプロジェクション(ProjectToを取得するために含めます)を使用して、ソースタイプに基づいて必要なデータを取得するために、Select LINQ投影をEFに強制的に適用させます。
+0

私のコードの犯人は、レイジーローディングエンティティを介してその属性をマップするための追加クエリを実行します。 '.ForMember(net => net.PropertyName、dto => dto.MapFrom(d => d.SRM_ENTITY_ATTRIBUTES.PROPERTY_NAME )); ナビゲーション属性属性をマップするには、各レコードのクエリを実行します。次に選択クエリには、SYSTEM_NAMEとPROPERTY_NAMEの他のすべてのテーブル列が含まれます。 解決策はありますか?1)単一列クエリかすべてのナビゲーションプロパティをマップする単一クエリですか? – Faisal

+0

はい、レイアウトしたソリューションを使用できます。それらのいずれかが、遅延読み込みの問題を修正します。 –

0

これは、遅延読み込みが有効になっているために発生する可能性があります。

この答えを読む:

Is automapper preventing lazy loading with EF?

+0

ありがとうございます。はい、遅延モデルがエンティティモデルで有効になっています。私はリファレンステーブルもロードする必要があるので、意図的に有効にしました。しかし、私は参照テーブルに対して同じクエリを複数回実行することを心配しています。実行は主テーブルレコードの数に依存します。 – Faisal

+0

クエリの例をいくつか教えてもらえますか?循環参照について心配していることを意味しますか?Parent> Child> Parent? –

関連する問題