Ошибка при попытке создать контроллер в. NET CORE Web Application - PullRequest
0 голосов
/ 08 января 2020

У меня есть веб-приложение. NET CORE, созданное в Visual Studio 2017. Оно было создано как пустой шаблон.

Файл startup.cs имеет следующий код

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSingleton<IInventoryServices, InventoryServices>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseMvcWithDefaultRoute();
    }

Program.cs как показано ниже:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 
WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();
}

Я пытался создать контроллер. Тип контроллера, который я выбрал для добавления, был «MVC Контроллер с представлениями, используя Entity Framework». При попытке создать в окне я указал класс модели и поставил галочку для «Создать представления», «Справочные библиотеки сценариев» и «Использовать страницу макета», которые, кстати, отмечены по умолчанию. Текстовое поле для указания страницы макета оставлено пустым.

При попытке создать контроллер я получаю следующую ошибку:

Произошла ошибка при запуске выбранного генератора кода: Скаффолдингу не удалось отредактировать класс запуска для регистрации нового контекста с помощью внедрения зависимости. Убедитесь, что в нем есть класс Startup и свойство Configuration

Не удалось выяснить, почему происходит эта ошибка. Это из-за проблемы DI или Entity Context?

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Вы должны убедиться, что DbContext зарегистрирован в классе запуска ConfigureServices () метод.

Первый впрыск IConfiguration интерфейс в классе запуска :

public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

, затем добавьте ниже код для ConfigureServices Метод:

services.AddDbContext<AppContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

, а затем добавьте адрес строки подключения в appsettings. json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
  } 
}
0 голосов
/ 08 января 2020

Сначала необходимо настроить внедрение зависимостей DbContext. Этот учебник шаг за шагом объяснит, что вам нужно сделать.

ASP. NET С Entity Framework

...