2017-08-30 6 views
1

私はautomapperマッピングのポイントを完全に理解していますが、私はデータベースエンティティにプロジェクトを使用したことはありません。簡単な例を説明する方法はありますか、なぜノーマルマッピングにプロジェクトを使うのでしょうか?Automapperプロジェクトの使い方を非常に簡単な例から理解するには?

与えられた例は次のとおりです:

答えて

0

ここでは例を読む:ProjectTo方法はあなたにいくつかのコードが保存されますようhttps://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensionsを、それが見えます

Mapper.Initialize(cfg => 
    cfg.CreateMap<OrderLine, OrderLineDTO>() 
    .ForMember(dto => dto.Item, conf => conf.MapFrom(ol => ol.Item.Name))); 

public List<OrderLineDTO> GetLinesForOrder(int orderId) 
{ 
    using (var context = new orderEntities()) 
    { 
    return context.OrderLines.Where(ol => ol.OrderId == orderId) 
      .ProjectTo<OrderLineDTO>().ToList(); 
    } 
} 

LINQの選択およびDTOにマップでないProjectToを使用して同じ時間ですので、マッピングを行う必要はなく、エンティティフィールドを選択する必要はありません。

あなたが代わりに次のreturn文のようなものを使用する必要があると思いますProjectToを使用しなかった場合:

return context.OrderLines.Where(ol => ol.OrderId == orderId) 
    .Select(ol => new OrderLineDTO {Item = ol.Item.Name}).ToList()); 
0

は、ドキュメントを読んで、私は代わりに地図のProjectToを使用する主な理由はあると思います中央の男を切る。実行時に、モデルを表示するだけの実体インスタンスはありません。だから、データベースからプロジェクトを見て、モデルを表示するのではなく、データベースからエンティティまで、モデルを表示します。実際、ProjectToはすべてselect文を生成します。

context.Entities.Select(e=>new Dto { Property = e.Property, ...}); 

あなた自身がseeです。

関連する問題