Я пытаюсь получить DbContext
Я зарегистрировался с опциями через services.AddDbContext(...)
на сервис-провайдере проекта, но при вызове configuration.Get<ModelContext>
он не может быть создан, так как опции, очевидно, не были предоставлены и, следовательно, также поставщик базы данных не указан.
Я использую ASP.NET Core 2.2 с Entity Framework Core 2.2.3, и мой DbContext
определен в отдельном проекте.
Мой DbContext
:
public class ModelContext : DbContext
{
public ModelContext(DbContextOptions<ModelContext> options) : base(options) { }
public ModelContext() { }
}
Я не переопределил OnConfiguring(DbContextOptionsBuilder)
в ModelContext
.
public class StartUp
{
public void ConfigureServices(IServiceCollection services)
{
public services.AddEntityFrameworkSqlServer();
services.AddDbContext<ModelContext>(options => options.UseSqlServer(modelConnectionString));
}
}
В контроллере (или в любом другом месте) я вызываю public HomeController(IConfiguration configuration) => _modelContext = configuration.Get<ModelContext>();
, который выдает неожиданное исключение.
Я специально получаю InvalidOperationException
с сообщением:
Для этого DbContext не настроен поставщик базы данных. Поставщик может быть настроен путем переопределения метода DbContext.OnConfiguring или с помощью AddDbContext в поставщике службы приложений. Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает объект DbContextOptions в своем конструкторе и передает его базовому конструктору для DbContext.
Согласно документации, которую я прочитал, и примерам, на которые я смотрел, ModelContext
должен быть создан с параметрами, которые я определил при вызове AddDbContext<ModelContext>
. Является ли метод Get
неправильным?