Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Automapper在Profile类中注入DbContext_C#_Asp.net Core_Automapper - Fatal编程技术网

C# Automapper在Profile类中注入DbContext

C# Automapper在Profile类中注入DbContext,c#,asp.net-core,automapper,C#,Asp.net Core,Automapper,我有以下映射配置文件 public class DomainProfile : Profile { private FootballPredictionsContext m_Context; public DomainProfile(FootballPredictionsContext context) { m_Context = context; } public DomainProfile() { Creat

我有以下映射配置文件

public class DomainProfile : Profile
{
    private FootballPredictionsContext m_Context;

    public DomainProfile(FootballPredictionsContext context)
    {
        m_Context = context;
    }

    public DomainProfile()
    {
        CreateMap<TipModel, Tip>()
            .ForMember(tip => tip.BetType, m => m.MapFrom(x => m_Context.BetTypes.First(y => y.Name == x.BetType)))
            .ForMember(tip => tip.BetCategory, m => m.MapFrom(x => m_Context.BetCategories.First(y => y.Name == x.BetCategory)))
            .ForMember(tip => tip.Sport, m => m.MapFrom(x => m_Context.Sports.First(y => y.Name == x.Sport)))
            .ForMember(tip => tip.Tipster, m => m.MapFrom(model => m_Context.Tipsters.First(y => y.Username == model.Tipster)));
    }
}

我尝试了解决方案,但我从根提供程序收到了“无法解析作用域服务”FootballPredictions.DAL.FootballPredictionsContext。“

假设您实际注册了上下文(
服务.AddDbContext
),该异常最可能的原因是您在注册上下文之前注册了AutoMapper。在执行类似于
服务的操作之前,请确保首先注册了您的上下文。AddAutoMapper

我最近遇到了类似的问题,原因是我试图将服务注入到具有较长生命周期的服务中(例如,瞬时和范围)。与DomainProfile类关联的生存期是什么?您是否尝试过将其更改为作用域或瞬态,以查看是否有帮助

由@DimitarTsonev实施: 因此,将映射器范围更改为

services.AddScoped(provider => new MapperConfiguration(cfg =>
    {
        cfg.AddProfile(new DomainProfile(provider.GetService<FootballPredictionsContext>()));
    }).CreateMapper());
services.AddScoped(provider=>newmapperconfiguration(cfg=>
{
AddProfile(新的DomainProfile(provider.GetService());
}).CreateMapper());

修复了此问题

如果查看提供的代码,您会注意到它们的注册顺序是正确的。我最近遇到了一个类似的问题,这是因为我试图将服务注入具有较长生命周期的服务中(例如,瞬态和作用域)。与DomainProfile类关联的生存期是什么?您是否尝试过将其更改为作用域或瞬态,以查看这是否有帮助?在解析器或类型转换器中移动依赖项。看见配置文件是单例的。@SimplyGed是的,这解决了这个问题!谢谢你可以用我提供的代码修改你的答案,我会接受它作为答案。
services.AddScoped(provider => new MapperConfiguration(cfg =>
    {
        cfg.AddProfile(new DomainProfile(provider.GetService<FootballPredictionsContext>()));
    }).CreateMapper());