具有继承的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个类都在不同的项目中(如果有任何根据)。

这是控制器构造函数:

    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);

看起来正确,对不对?但:

错误映射类型。

映射类型:IEnumerable 1 -> IEnumerable1 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.IEnumerable1 [[[AlexanderTsema.ViewModels.ViewModels.Certificate,AlexanderTsema.ViewModels,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]

和内部执行:缺少类型映射配置或不支持的映射。

映射类型:证书->证书AlexanderTsema.Storage.Entities.Entities.Certificate-> AlexanderTsema.ViewModels.ViewModels.Certificate

请指教。

我尝试将Entity.Certificate映射到Entity.Certificate,并且工作正常。

米卡·德瑞(MickaëlDerriey)

我认为您可能缺少的至少是AutoMapper可用于发现配置文件的一种类型或程序集。

services.AddAutoMapper(typeof(MappingProfile)); 应该做到的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVC5,WebAPI2和AutoFac无法正常工作。所有Nuget软件包已更新

来自分类Dev

AutoMapper无法正常工作?

来自分类Dev

JavaScript继承无法正常工作

来自分类Dev

版本5上带有getBackground()。setAlpha的按钮-棒棒糖无法正常工作

来自分类Dev

c#MVC5 RedirectToAction无法正常工作-“序列中没有匹配的元素”

来自分类Dev

具有继承功能的反序列化Newtonsoft JSON.NET无法正常工作

来自分类Dev

具有%20的ImagePath无法正常工作

来自分类Dev

具有%20的ImagePath无法正常工作

来自分类Dev

具有Filterrific的Rails无法正常工作

来自分类Dev

MySQL 2选择所有语句无法正常工作

来自分类Dev

Laravel 5链接无法正常工作

来自分类Dev

Laravel 5邮件队列无法正常工作

来自分类Dev

Laravel 5范围无法正常工作

来自分类Dev

HTML5记录无法正常工作

来自分类Dev

Laravel 5与委托-hasRole无法正常工作

来自分类Dev

HTML5视频无法正常工作

来自分类Dev

Laravel 5漂亮的URL无法正常工作

来自分类Dev

属于Rails 5的存在无法正常工作

来自分类Dev

折叠的Navbar无法正常工作并启动5

来自分类Dev

Laravel 5受托-hasRole无法正常工作

来自分类Dev

Laravel 5关系无法正常工作?

来自分类Dev

Laravel 5漂亮的URL无法正常工作

来自分类Dev

Laravel 5注销无法正常工作

来自分类Dev

属于Rails 5的存在无法正常工作

来自分类Dev

HTML5 - 模式无法正常工作

来自分类Dev

NgModel 在 Angular 5 中无法正常工作

来自分类Dev

Laravel 5 中的不同无法正常工作

来自分类Dev

具有反射类的模型Yii2无法正常工作

来自分类Dev

Angular 2 RC-5异步测试无法正常工作