私の販売プロセスでは、automapper を使用して Cart エンティティを CartModel にマップします。Cart エンティティには Currency エンティティが含まれており、CurrencyCode 文字列にマップする必要があります。そして質問があります。リポジトリ メソッドで nHibernate によって明示的にフェッチされた Currency エンティティでしょうか、それともマッピング ルールに残したままでも問題ありませんか? 最善の解決策は何ですか?
正直なところ、オートマッパーはクエリをデータベースに送信するべきではないと思います。そうですか?
マッピング:
Mapper.CreateMap<Cart, CartModel>()
.ForMember(dest => dest.Amount, src => src.MapFrom(s => s.ArticleList.Count))
.ForMember(dest => dest.CurrencyCode, src => src.MapFrom(s => s.Currency.Code))
.ForMember(dest => dest.CartLines, src => src.MapFrom(s => s.ArticleList));
カートサービス:
public virtual CartModel GetCartInfo(long cartId)
{
var dto = new CartModel();
var cart = _cartRepository.GetForCartSummary(cartId);
Mapper.Map(cart, dto);
return dto;
}
カートリポジトリ:
public Cart GetForCartSummary(long cartId)
{
return Session.Query<Cart>()
.Where(c => c.Id == cartId)
// .Fetch(c => c.Currency)
.FetchMany(c => c.ArticleList)
.Single();
}