#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