Ho cercato ora una risposta chiara su questo problema, incluso github e ancora non riesco a vedere cosa mi manca qui:
Impossibile risolvere il servizio con ambito ' Microsoft.EntityFrameworkCore.DbContextOptions`1 [PureGateway.Data.GatewayContext] ' dal provider principale.
In 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>();
}
Uso:
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);
}
Sto usando netcore 2.2.
è necessario utilizzare AddDbContext
o AddDbContextPool
, non entrambi.
DbContextPool richiede un singolo costruttore pubblico. Controlla il mio esempio qui sotto:
public partial class MyDbContext : DbContext
{
private readonly IUserResolverService _userResolverService;
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
_userResolverService = this.GetService<IUserResolverService>();
}
}