2015-09-12 64 views
0

我有三个业务对象:AutoMapper继承映射不​​工作

​​

PayCaddyEntity基本上只是提供了一个共同Id财产,作为一个“标志”我可以在通用的限制使用。

public abstract class PayCaddyMessage : PayCaddyEntity 
{ 
    public string Subject { get; set; } 
    public ApplicationUser Sender { get; set; } 
    public ApplicationUser Receiver { get; set; } 
    public DateTime? TimeSent { get; set; } 
    public DateTime? TimeReceived { get; set; } 
} 

public class BetPaymentOffer: PayCaddyMessage 
{   
    public string Description { get; set; } 
    public int Amount { get; set; } 
    public bool PaymentAccepted { get; set; } 
} 

我试图将它们映射到一个共同的视图模型如下:

Mapper.CreateMap<PayCaddyMessage, BetPaymentOfferViewModel>() 
    .Include<BetPaymentOffer, BetPaymentOfferViewModel>(); 
Mapper.CreateMap<BetPaymentOffer, BetPaymentOfferViewModel>(); 

var offer = new BetPaymentOffer { Sender = GetCurrentUser() }; 
var model = Mapper.Map<BetPaymentOfferViewModel>(offer); 

基类属性所导出的类设置不被映射。在model中,Sender为空。我究竟做错了什么?

回答

0

在AutoMapper 4.0中改变了继承 - 为了修复一些场景,继承链在配置时计算。在配置后拨打Mapper.Configuration.Seal(),或者更好的是,使用Mapper.Initialize()而不是Mapper.CreateMap