Automapperを使用してViewModelをDomainクラスにマップしようとしています。プロパティがソースに存在しない場合のオートマッパーマッピング
ただし、ViewModelにはDomainクラスに存在しないプロパティが含まれています。
代わりに、Domainクラスの別のプロパティProductを使用してViewModel Priceプロパティにマップしていますが、これは動作していないようです。
var list = _productRepository.GetProducts();
Mapper.Map<Order, OrderViewModel>(list);
しかし、価格のプロパティが(nullではない)のように空である:
public class DomainToViewModelMappingProfile : Profile
{
public override string ProfileName
{
get
{
return "DomainToViewModelMappings";
}
}
public DomainToViewModelMappingProfile()
{
ConfigureMappings();
}
/// <summary>
/// Creates a mapping between source (Domain) and destination (ViewModel)
/// </summary>
private void ConfigureMappings()
{
CreateMap<Core.Domain.Product, Web.Models.Price>()
.ForMember(dest => dest.UniqueProductCode,
opts => opts.MapFrom(src => src.Code))
.ForMember(dest => dest.Charge,
opts => opts.MapFrom(src => src.Amount))
.ForMember(dest => dest.CourierCharge,
opts => opts.MapFrom(src => src.DeliveryCharge));
CreateMap<Core.Domain.Order, OrderViewModel>()
.ForMember(dest => dest.Product,
opts => opts.MapFrom(src => src.Product))
.ForMember(dest => dest.Price,
opts => opts.MapFrom(src => new List<Price>()));
}
}
はその後、私のコントローラで私が持っている:私のマッピングプロファイルで次に
public class OrderViewModel
{
public IEnumerable<Product> Product { get; set; }
public IEnumerable<Price> Price { get; set; }
}
public class Order
{
public IEnumerable<Product> Product { get; set; }
}
public class Product
{
public string Code { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Amount { get; set; }
public decimal DeliveryCharge { get; set; }
}
public class Price
{
public string UniqueProductCode { get; set; }
public decimal Charge { get; set; }
public decimal CourierCharge { get; set; }
}
は、私は次のセットアップを持っていますそのプロパティはインスタンス化されています。ちょうどレコードがありません。
私は間違っていますか?
マップに使用しているコードを表示してください。 – sachin
'.ForMember(dest => dest.Price、opts => opts.MapFrom(src => new List())); 'と等しい'メンバー 'Price'の場合、空のリストを作成するだけです。あなたが言っているのはそれですか? –
stuartd
マッピングプロファイルコード@sachinに追加されました。 – jgill09