Я реализую IdentityServer4 с pnet core + ef core 3.1, и у меня есть dbContext с generi c DbContextOptions <> в конструкторе:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
и это моя инъекция dbContext в Startup.cs:
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appSettings.json", false)
.Build();
string connectionString = config.GetSection("ConnectionStrings")["DefaultConnection"];
services.AddDbContext<ApplicationDbContext>(builder =>
builder.UseSqlServer(connectionString));
После появления домашней страницы IdentityServer и ввода URL-адреса DiscoveryEndpoint появляется эта ошибка:
InvalidOperationException: Нет поставщик базы данных был настроен для этого DbContext. Поставщик может быть настроен путем переопределения метода DbContext.OnConfiguring или с помощью AddDbContext в поставщике службы приложений. Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает объект DbContextOptions в своем конструкторе и передает его базовому конструктору для DbContext.
и после этого я переопределяю метод OnConfiguring:
override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var connectionString = configuration.GetConnectionString("DefaultConnection");
optionsBuilder.UseSqlServer(connectionString);
base.OnConfiguring(optionsBuilder);
}
но ничего не изменилось!