Ошибка Automapper «Типы отображения ошибок» при присоединении к таблице ICollection - PullRequest
0 голосов
/ 18 апреля 2019

В Angular-проекте, основанном на ASP.NET MVC и EF, у меня есть следующие объекты, как показано ниже:

Примечание. Если я не добавлю вложение, ошибки не возникнет. Но добавление файла, вызывающего эту ошибку во время отображения.

Ticket.cs:

public class Ticket
{
    [Key]
    public int Id { get; set; }

    public string Summary { get; set; }

    public string Description { get; set; }

    //code omitted for brevity 

    public virtual ICollection<FileAttachment> FileAttachments { get; set; }
}

TicketViewModel.cs:

public class TicketViewModel
{
    public int Id { get; set; }

    //code omitted for brevity 

    public virtual ICollection<FileAttachmentViewModel> FileAttachments { get; set; }
}


FileAttachmentViewModel.cs:

public class FileAttachmentViewModel
{
    public int Id { get; set; }

    public int TicketId { get; set; }

    public string FileName { get; set; }

    public byte[] FileData { get; set; }

    //code omitted for brevity 

    public virtual Ticket Ticket { get; set; }
}

Вот отображение и метод Save, где я сталкиваюсь с ошибкой "Типы отображения. Типы отображения: TicketViewModel -> Ticket ..." ошибка.


Service.cs:

public TicketViewModel Save(TicketViewModel model)
{
    //here I encounter the error while mapping TicketViewModel to Ticket
    var record = model.MapEntity<Ticket>();

    //code omitted for brevity 
}


Mapping.cs:

CreateMap<Ticket, TicketViewModel>();    
CreateMap<TicketViewModel, Ticket>()
    .ForMember(dest => dest.FileAttachments, opts => opts.MapFrom(src => src.FileAttachments);


CreateMap<FileAttachment, FileAttachmentViewModel>();
CreateMap<FileAttachmentViewModel, FileAttachment>();

Буду признателен за любую помощь ...

1 Ответ

0 голосов
/ 18 апреля 2019

Было бы полезно также иметь определение вашего класса Ticket, по крайней мере, с собственным определением свойства FileAttachments.Это может быть связано с тем, что ваш тип свойства FileAttachments является интерфейсом.У вас нет сопоставления для типа FileAttachmentViewModel, который является требованием для сопоставления одной универсальной коллекции с другой.Я предполагаю, что у вас есть свойство типа FileAttachment, а не FileAttachmentViewModel в вашем классе Ticket.Следовательно, AutoMapper дает вам исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...