簡體   English   中英

自動映射器錯誤映射類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM