【发布时间】: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()));
它正在工作,但我仍然对我错过了一些东西并且没有以正确的方式做到这一点感到困惑。我做错了什么?或者我错过了配置中的某些内容?
【问题讨论】: