Не удается разрешить службу DopContextOptions в области действия - PullRequest
0 голосов
/ 09 января 2019

Я сейчас искал четкий ответ по этому вопросу, включая github, и до сих пор не вижу, чего мне здесь не хватает:

Невозможно разрешить службу с областью действия ' Microsoft.EntityFrameworkCore.DbContextOptions`1 [PureGateway.Data.GatewayContext] ' от корневого поставщика.

В Startup.cs:

        public void ConfigureServices(IServiceCollection services)
        {
            //other code omitted for brevity

            var connection = Configuration.GetConnectionString("DefaultConnection");
            services.AddDbContext<GatewayContext>(options => options.UseSqlServer(connection));
            services.AddDbContextPool<GatewayContext>(options => options.UseSqlServer(connection));
            services.AddScoped<IGatewayRepository, GatewayRepository>();
        }

Использование:

public sealed class MatchBrokerRouteMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<MatchBrokerRouteMiddleware> _logger;

    public MatchBrokerRouteMiddleware(
        RequestDelegate next,
        ILoggerFactory loggerFactory)
    {
        _next = next;
        _logger = loggerFactory.CreateLogger<MatchBrokerRouteMiddleware>();
    }

    public async Task Invoke(HttpContext context, GatewayContext gatewayContext)
    {
            await _next(context);
    }

Я использую netcore 2.2.

1 Ответ

0 голосов
/ 09 января 2019

вам нужно использовать AddDbContext или AddDbContextPool, но не оба.


DbContextPool требуется один открытый конструктор. Проверьте мой пример ниже:

public partial class MyDbContext : DbContext
{
    private readonly IUserResolverService _userResolverService;

    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
        _userResolverService = this.GetService<IUserResolverService>();
    }
}
...