Исключение InvalidOperationException: MVC

#asp.net-mvc #asp.net-core

#asp.net-mvc #asp.net-core

Вопрос:

Пытаюсь научить себя MVC. Я использую базу данных сначала в шаблоне MVC. Я создал каркас для контроллера и представлений. И все же, когда я запускаю его, я получаю эту ошибку? Я не уверен, что делать, поскольку это было сгенерировано автоматически.

 InvalidOperationException: Unable to resolve service for type 'OPPS_APP11_7_2020.Models.ENT_PLANNERContext' while attempting to activate 'OPPS_APP11_7_2020.Controllers.ProductsController'.
Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)
  

Ответ №1:

Похоже, что в конструкторе ProductController есть контекст базы данных, хотя он не зарегистрирован с помощью Dependency inject (DI) в startup.cs в ConfigureServices. Если вы не знакомы с зависимостью, введите ASP.Net core, я предлагаю вам прочитать об этом, проверьте MS Docs

Если вы используете Entity framework (EF), существует специальный способ добавления их контекста в DI. проверьте это, настраивая DbContext в EF Core, Ms Docs

Ответ №2:

После использования Scaffold-DbContext команды для создания связанных моделей и dbcontext на основе существующей базы данных необходимо зарегистрировать DbContext для внедрения зависимостей в метод ConfigureServices запуска.

Попробуйте добавить следующий код:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        //register the dbcontext.
        services.AddDbContext<ENT_PLANNERContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }
  

Вы могли бы добавить строку подключения в файл appsetting.json:

   "ConnectionStrings": {
    "DefaultConnection": "{your database connection string}"
  }
  

Ссылка:

https://www.entityframeworktutorial.net/efcore/create-model-for-existing-database-in-ef-core.aspx