我有一個實體: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; }
}
而且我有一個視圖模型:
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,我想擺脫它)。 我有映射簡介:
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;
}
而且GET方法,我映射實體視圖模型:
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);
看起來是正確的,對不對? 但是:
錯誤映射類型。
映射類型: 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,版本= 1.0.0.0,文化=中性公鑰=空]]
和Inner Exc: 缺少類型映射配置或不支持的映射。
映射類型: 證書 - >證書 AlexanderTsema.Storage.Entities.Entities.Certificate - > AlexanderTsema.ViewModels.ViewModels.Certificate
請指點。
我試圖將Entity.Certificate映射到Entity.Certificate,它工作正常。
在發佈quiestion之前閱讀幫助中心文章http://stackoverflow.com/help/tagging特別是**我應該在標題中使用標籤嗎?**部分:_避免將標籤插入以下任何格式的標題中: [標籤]:[問題標題] _ – Tseng
@ user2970104快速的問題,但。如果您從中刪除所有參數,智能感知會向您顯示「AddAutoMapper」的什麼簽名?您使用的是哪個平臺,完整的.NET Framework還是.NET Core應用程序?我試圖理解爲什麼調用它沒有參數不起作用。 –
bot編輯問題標題:(這是ASP.NET Core 1.1。Intellisense沒有顯示任何具體內容。@MickaëlDerriey – user2970104