У меня есть Entity:Automapper 5,2 с наследования не работает
public abstract class BaseEntity
{
public Int16 Id { get; set; }
public DateTime Timestamp { get; set; }
}
public class Certificate : BaseEntity
{
public String Name { get; set; }
public String Authority { get; set; }
public DateTime RecieveDate { get; set; }
public String Image { get; set; }
}
И у меня есть ViewModel:
public abstract class BaseViewModel
{
public Int16 Id { get; set; }
public DateTime Timestamp { get; set; }
}
public class Certificate : BaseViewModel
{
public String Name { get; set; }
public String Authority { get; set; }
public DateTime RecieveDate { get; set; }
public String Image { get; set; }
}
Мне нужно отобразить Entity.Certificate к ViewModel.Certificate (я не действительно нужно сопоставить BaseEntity вообще, я хочу избавиться от него). У меня есть Mapper профиль:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Storage.Entities.Entities.BaseEntity, ViewModels.ViewModels.BaseViewModel>()
.Include<Storage.Entities.Entities.Certificate, ViewModels.ViewModels.Certificate>();
CreateMap<Storage.Entities.Entities.Certificate, ViewModels.ViewModels.Certificate>();
}
}
Зарегистрирован в ConfigureServices:
services.AddAutoMapper();
Все 3 класса, упомянутые выше, в различных проектах (если это делает любой Sence).
Этот конструктор контроллера:
private readonly Storage.Abstractions.Core.IStorage _storage;
private readonly IMapper _mapper;
public CertificateController(Storage.Abstractions.Core.IStorage storage, IMapper mapper)
{
this._storage = storage;
this._mapper = mapper;
}
И Получ где я карта объект в ViewModel:
IEnumerable<Storage.Entities.Entities.Certificate> certificates = await this._storage.GetRepository<ICertificateRepository>().AllAsync();
IEnumerable<ViewModels.ViewModels.Certificate>result = _mapper.Map<IEnumerable<Storage.Entities.Entities.Certificate>, IEnumerable<ViewModels.ViewModels.Certificate>>(certificates);
выглядит правильно, верно? BUT:
Типы отображения ошибок.
типы карт: IEnumerable System.Collections.Generic.IEnumerable 1[[AlexanderTsema.Storage.Entities.Entities.Certificate, AlexanderTsema.Storage.Entities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.IEnumerable
1 [[AlexanderTsema.ViewModels.ViewModels.Certificate, AlexanderTsema.ViewModels, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = NULL]]
и Inner Exc: Отсутствует конфигурация карты типа или неподдерживаемое отображение.
типы карт: Certificate -> Сертификат AlexanderTsema.Storage.Entities.Entities.Certificate -> AlexanderTsema.ViewModels.ViewModels.Certificate
Пожалуйста, советы.
Я попытался отобразить Entity.Certificate для Entity.Certificate, и он отлично работает.
Прочтите статьи в справочном центре, прежде чем отправлять запрос http://stackoverflow.com/help/tagging, в частности, ** Следует ли использовать теги в заголовках? ** Раздел: _Убежать вставлять теги в заголовки в любом из следующих форматов: [тег]: [вопрос название] _ – Tseng
@ пользователь2970104 Быстрые вопросы, однако. Какая подпись «AddAutoMapper» делает IntelliSense, если вы удалите из нее все аргументы? Какую платформу вы используете, полную платформу .NET Framework или это приложение .NET Core? Я пытаюсь понять, почему вызов его без параметров не работал. –
bot редактирует заголовок вопроса :(Это ASP.NET Core 1.1. Intellisense не показывает ничего конкретного. @ MickaëlDerriey – user2970104