![](/img/trans.png)
[英]Automapper AutoMapper.AutoMapperMappingException: Error mapping types
[英]automapper Error mapping types
一切都很好,直到我將DataTime屬性添加到我的Model和viewModel中。 所有數據都是正確的,但是仍然會發生錯誤。 我認為出現錯誤是因為我添加了PublicationDate。 據我了解,Automapper2.0應該可以很好地處理日期,所以我不知道為什么會發生這種情況
發生錯誤:
Publication viewModelPublication = new Publication(Mapper.Map<PublicationViewModel, Publication>(viewModel));
我的AutoMapperConfig:
public class AutoMapperConfig
{
public static void Initialize()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Author, AuthorViewModel>()
.ForMember(a => a.AuthorId, opt => opt.MapFrom(a => a.AuthorId))
.ForMember(a => a.AuthorName, opt => opt.MapFrom(a => a.AuthorName));
cfg.CreateMap<AuthorViewModel, Author>()
.ForMember(a => a.AuthorId, opt => opt.MapFrom(a => a.AuthorId))
.ForMember(a => a.AuthorName, opt => opt.MapFrom(a => a.AuthorName));
cfg.CreateMap<Publication, PublicationViewModel>()
.ForMember(p => p.PublicationId, opt => opt.MapFrom(p => p.PublicationId))
.ForMember(p => p.PublicationName, opt => opt.MapFrom(p => p.PublicationName))
.ForMember(p => p.Pages, opt => opt.MapFrom(p => p.Pages))
.ForMember(p => p.Publisher, opt => opt.MapFrom(p => p.Publisher))
.ForMember(p => p.PublicationDate, opt => opt.MapFrom(p => p.PublicationDate))
.ForMember(p => p.Subscription, opt => opt.MapFrom(p => p.Subscription))
.ForMember(p => p.Authors, opt => opt.MapFrom(p => p.Authors.ToList()));
cfg.CreateMap<PublicationViewModel, Publication>()
.ForMember(p => p.PublicationId, opt => opt.MapFrom(p => p.PublicationId))
.ForMember(p => p.PublicationName, opt => opt.MapFrom(p => p.PublicationName))
.ForMember(p => p.Pages, opt => opt.MapFrom(p => p.Pages))
.ForMember(p => p.Publisher, opt => opt.MapFrom(p => p.Publisher))
.ForMember(p => p.PublicationDate, opt => opt.MapFrom(p => p.PublicationDate))
.ForMember(p => p.Subscription, opt => opt.MapFrom(p => p.Subscription))
.ForMember(p => p.Authors, opt => opt.MapFrom(p => p.Authors));
});
}
}
我的模特:
public class PublicationViewModel
{
public PublicationViewModel()
{
Authors = new List<AuthorViewModel>();
}
public int PublicationId { get; set; }
[Display(Name = "Publication Name")]
public string PublicationName { get; set; }
public int Pages { get; set; }
public string Publisher { get; set; }
[Display(Name = "Publication Date")]
public DateTime PublicationDate { get; set; }
public SubscriptionViewModel Subscription { get; set; }
[UIHint("AuthorsEditor")]
public virtual List<AuthorViewModel> Authors { get; set; }
}
public class Publication
{
public Publication()
{
}
public Publication(Publication publication)
{
PublicationId = publication.PublicationId;
PublicationName = publication.PublicationName;
Pages = publication.Pages;
Publisher = publication.Publisher;
Subscription = publication.Subscription;
PublicationDate = publication.PublicationDate;
Authors = publication.Authors;
}
public int PublicationId { get; set; }
public string PublicationName { get; set; }
public int Pages { get; set; }
public string Publisher { get; set; }
public DateTime PublicationDate { get; set; }
public Subscription Subscription { get; set; }
public virtual ICollection<Author> Authors { get; set; }
}
我發現了一個問題。 我忘了從我的subscriptionViewModel發送ID(訂閱是一種枚舉類型)。
.ForMember(p => p.Subscription, opt => opt.MapFrom(p => p.Subscription.SubscriptionId))//here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.