【问题标题】:Automapper unmaped property found找到 Automapper 未映射的属性
【发布时间】:2019-02-01 06:59:58
【问题描述】:

大家好,我发现了一件非常奇怪的事情,我想请教你们。 我在我的 .dotnet 核心 Web Api 项目中使用 AutoMaper。在映射过程中,我得到了 AutoMapperConfigurationException。

这是我目前正在使用的参考:

<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="5.0.1" />

我有一个博客实体类:

public class BlogEntity 
{
   public string Title { get; set; }
   public int BlogEntityId { get; set; }
   public List<Post> Posts { get; set; }
}

还有我用来创建新的空白博客实体的 DTO 类:

public class BlogCreateDto
{
   public string Title { get; set; }
}

这是我的映射器配置文件:

  public class BlogMappingProfile  : Profile
    {
        public BlogMappingProfile()
        {
            CreateMap<BlogCreateDto,BlogEntity>();

        }
    }

这是我在 Startup.cs 中用来设置自动映射器的一行

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


            services.AddAutoMapper();
....

这是我在异常中收到的消息:

找到未映射的成员。查看下面的类型和成员。\n添加 自定义映射表达式、忽略、添加自定义解析器或修改 源/目标类型\n对于没有匹配的构造函数,添加一个无参数 ctor,添加可选参数,或映射所有构造函数 参数\n================================================= ===========\r\nAutoMapper 为您创建了此类型映射,但您的类型无法使用 当前配置。

我尝试了很多东西,忽略成员、构造函数、继承等,但没有一个不起作用。我通过在 Startup.cs 中添加配置并手动添加我的自动映射器配置文件来解决它:

        services.AddAutoMapper(cfg => cfg.AddProfile(new BlogMappingProfile()));

它正在工作,但我仍然对我错过了一些东西并且没有以正确的方式做到这一点感到困惑。我做错了什么?或者我错过了配置中的某些内容?

【问题讨论】:

    标签: asp.net-core automapper


    【解决方案1】:

    您必须提供您的配置文件所在的程序集或程序集。该扩展使用程序集扫描来查找要注册的给定类型。如果您的个人资料与您的启动课程在同一个项目中,您可以执行以下操作

    services.AddAutoMapper(typeof(Startup).Assembly);
    

    您还需要它来自动注册所有其他 AutoMapper 类型,例如 IValueResolver&lt;,,&gt; 和 ITypeConverter&lt;,&gt;。

    你可以找到那个扩展here的注册过程。

    【讨论】:

    • 不客气 :) 不要忘记将答案标记为正确。
    【解决方案2】:

    就我而言,我忘记将 Profile 文件添加到 AutoMapperConfig 类中

    类似的东西

     public static void Configure(MapperConfigurationExpression config)
     {
       config.AddProfile<SettingsProfile>();
     }
    

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多