具有依赖注入的AutoMapper没有映射配置文件?

问题描述 投票:0回答:1

所以这是我的第一个Stack Overflow问题,希望我能做好足够的细节以寻求帮助。我正在尝试将AutoMappper与具有依赖项注入功能的dotnet 3.1一起使用,但是它似乎并没有像说的那样注册我的地图。

我收到的错误:

AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.

Mapping types:
User -> UserCustomerDto

在我的Startup.cs中,我在services.AddAutoMapper(typeof(Startup));区域内有IServiceCollection

我创建了我的User模型和各种DTO模型。

这里是我拥有的一个示例Profile模型:

    public class UserCustomerProfile : Profile
    {
        public UserCustomerProfile()
        {
            CreateMap<User, UserCustomerDto>();
            CreateMap<UserCustomerDto, User>();
        }
    }

我的DTO模型具有我的用户模型所具有的所有字段减去一些字段,我不想在用户界面上看到的那些字段。

文档很难理解,因为有非依赖性注入的示例以及9.0之前的版本,在项目启动期间需要进行配置。

我也尝试在.ReverseMap()上使用CreateMap(),但那也不起作用。

我正在注入正在使用的服务内部:

        private readonly IMapper _mapper;

        public UserService(IMapper mapper)
        {
            _mapper = mapper;
        }

并且将错误吐出的地方是该服务内部,其代码如下:_mapper.Map<UserCustomerDto>(user)

我对dotnet core和C#还是相当陌生,因此,任何帮助将不胜感激!谢谢,我希望这能为我提供正确的指导。

UPDATE:将Profile模型与Startup移至同一项目时,一切正常。现在,我只需要知道如何添加对包含我的Profile模型的其他项目的引用。也许我不能?将其保留在我的其他模型所在的我的Models项目中会很好。

c# entity-framework asp.net-core dependency-injection automapper
1个回答
1
投票

我认为您尚未将自动映射器配置文件注册到服务容器中。

dotnet核心的设置在这里

https://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core

如果为dotnet核心添加名为AutoMapper.Extensions.Microsoft.DependencyInjection的额外的nuget包,并且您的配置文件位于同一项目中,则可以在启动时添加此代码

services.AddAutoMapper(Assembly.GetExecutingAssembly());

它将搜索所有配置文件并将它们注册到服务列表中。

© www.soinside.com 2019 - 2024. All rights reserved.