私はautomapperマッピングのポイントを完全に理解していますが、私はデータベースエンティティにプロジェクトを使用したことはありません。簡単な例を説明する方法はありますか、なぜノーマルマッピングにプロジェクトを使うのでしょうか?Automapperプロジェクトの使い方を非常に簡単な例から理解するには?
与えられた例は次のとおりです:
私はautomapperマッピングのポイントを完全に理解していますが、私はデータベースエンティティにプロジェクトを使用したことはありません。簡単な例を説明する方法はありますか、なぜノーマルマッピングにプロジェクトを使うのでしょうか?Automapperプロジェクトの使い方を非常に簡単な例から理解するには?
与えられた例は次のとおりです:
ここでは例を読む: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());
は、ドキュメントを読んで、私は代わりに地図のProjectToを使用する主な理由はあると思います中央の男を切る。実行時に、モデルを表示するだけの実体インスタンスはありません。だから、データベースからプロジェクトを見て、モデルを表示するのではなく、データベースからエンティティまで、モデルを表示します。実際、ProjectToはすべてselect文を生成します。
context.Entities.Select(e=>new Dto { Property = e.Property, ...});
あなた自身がseeです。