Automapper message d'erreur indiquant que le mappeur pas initialisé

Je suis en utilisant Automapper 5.2. J'ai utilisé comme base cette lien. Je vais décrire, dans les étapes, le processus de configuration de Automapper que je suis passé par.

Première j'ai ajouté Automapper de Projet.json comme indiqué:

PM> Install-Package AutoMapper

Deuxième j'ai créé un dossier pour stocker tous les fichiers liés à la cartographie appelé "Mappings"

Troisième je de définir la configuration de Automapper dans son propre fichier dans les mappages dossier :

public class AutoMapperConfiguration
{
    public MapperConfiguration Configure()
    {
        var config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile<ViewModelToDomainMappingProfile>();
            cfg.AddProfile<DomainToViewModelMappingProfile>();
            cfg.AddProfile<BiDirectionalViewModelDomain>();
        });
        return config;
    }
}

De suite Aussi dans son propre fichier dans les mappages dossier-je configurer le mappage de profil comme suit:

public class DomainToViewModelMappingProfile : Profile
{
    public DomainToViewModelMappingProfile()
    {
        CreateMap<Client, ClientViewModel>()
           .ForMember(vm => vm.Creator, map => map.MapFrom(s => s.Creator.Username))
           .ForMember(vm => vm.Jobs, map => map.MapFrom(s => s.Jobs.Select(a => a.ClientId)));
    }
}

Cinquième, j'ai ajouté une méthode d'extension comme son propre fichier aussi dans les mappages dossier... il a été utilisé prochain démarrage.cs:

public static class CustomMvcServiceCollectionExtensions
{
    public static void AddAutoMapper(this IServiceCollection services)
    {
        if (services == null)
        {
            throw new ArgumentNullException(nameof(services));
        }
        var config = new AutoMapperConfiguration().Configure();
        services.AddSingleton<IMapper>(sp => config.CreateMapper());
    }
}

Sixième j'ai ajouté cette ligne dans le ConfigureServices méthode de Démarrage.cs

        //Automapper Configuration
        services.AddAutoMapper();

Enfin je l'ai utilisé dans un dispositif de commande pour convertir une collection...

 IEnumerable<ClientViewModel> _clientVM = Mapper.Map<IEnumerable<Client>, IEnumerable<ClientViewModel>>(_clients);

Basé sur la question je l'ai mentionné plus tôt, j'ai pensé que j'avais tout réglé de manière que je puisse l'utiliser cependant j'ai une erreur sur la ligne ci-dessus dans le Contrôleur...

"Mapper" non initialisé. Appel Initialiser avec la configuration appropriée. Si vous essayez d'utiliser le mappeur de cas par le biais d'un conteneur ou autre, assurez-vous que vous n'avez pas d'appels à la statique du Mappeur.Carte des méthodes, et si vous utilisez ProjectTo ou UseAsDataSource les méthodes d'extension, assurez-vous que vous passez dans la IConfigurationProvider instance."

Qu'ai-je raté.. Est-ce la bonne façon de mettre en place Automapper? Je pense que je suis en manque une étape ici.. toute aide grandement appréciée.

  • Salut.. Avez-vous trouvé la solution? Suis également confronté à la même question.
  • J'obtiens cette erreur avec AutoMapper.Extensions.Microsfot.DependencyInjection Version 5.0.1 et AutoMapper 7.0.1. L'installation de 3.2.0 avec AutoMapper 6.1.1 correction du problème et laissez-moi appeler _mapper.Carte normalement. Je ne sais pas pourquoi provoquer d'aussi loin que je peux dire que je ne suis pas à l'appel de la statique Mappeur de la classe, et je ne suis pas en utilisant ProjectTo ou UseAsDataSource.
InformationsquelleAutor si2030 | 2016-12-22