Скаффолдинг контроллера не работает в предварительной версии VS 2017 для предварительной версии ASP.NET Core 2

Я пытаюсь использовать строительные леса для создания контроллера MVC с представлениями, используя Entity Framework:

введите здесь описание изображения

Я создал ApplicationDBContext:

public class ApplicationDbContext : DbContext
    {        

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }           

        public DbSet<med1.Models.House> House { get; set; }
    }

и добавлено в ConfigureServices:

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

И, конечно же, у меня есть модель дома:

public class House
{
    public int ID { get; set; }
    public string HouseName { get; set; }
    public string Address1 { get; set; }
    public int CityID { get; set; }
    public City City { get; set; }
    public string ZIP { get; set; }
    public int StateID { get; set; }
    public State State { get; set; }
}

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

Хорошо, я добавил конструктор без параметров в ApplicationDBContext:

public ApplicationDbContext() { }

И получил следующую ошибку: введите здесь описание изображения.

На самом деле у меня была такая же проблема с предыдущим проектом, и я создал Controller и View вручную.

Но для этого проекта я хотел бы использовать строительные леса.

Я делаю что-то не так или это проблема предварительного просмотра VS 2017?




Ответы (2)


Вы можете пропустить эту часть -

public class AppDbContextFactory : IDbContextFactory<AppDbContext>
{
    public AppDbContext Create(string[] args) =>
        Program.BuildWebHost(args).Services.GetRequiredService<AppDbContext>();
}

После того, как вы включите строительные леса в своем проекте ASP.NET Core 2.0 и создадите имя модели «Дом», выполните следующие действия:

Шаг 1. Щелкните правой кнопкой мыши папку «Контроллеры» в обозревателе решений и выберите «Добавить» > «Новый шаблонный элемент».

Шаг 2. Выберите «Контроллер MVC с представлением, используя Entity Framework» и нажмите «Добавить».

Шаг 3. В разделе "Добавить контроллер" выберите "Модель дома" и с помощью знака "плюс" (+) создайте новый контекст AppDbContext. Он также добавит вышеупомянутый AppDbContextFactory.

введите здесь описание изображения

После завершения шага 3 у вас будет HousesController в папке Controllers и соответствующая папка Houses внутри папки представлений.

Это мой AppDbContext выглядит так:

public class AppDbContext : DbContext
{
    public AppDbContext (DbContextOptions<AppDbContext> options)
        : base(options)
    {
    }

    public DbSet<AspNetCore200_VS2017preview1_scaffolding.Models.House> House { get; set; }
}

Надеюсь, это поможет двигаться дальше.

person Sanket    schedule 10.06.2017
comment
теперь у меня другая ошибка: сертификат с именем «HTTPS» не найден в конфигурации для текущей среды (производство). - person Alexan; 10.06.2017
comment
Вы должны включить SSL в своем приложении. Задайте для переменной среды ASPNETCORE_ENVIRONMENT значение Development, а затем попробуйте. - person Sanket; 10.06.2017
comment
Я не уверен, как это связано с лесами. Попробуйте отключить SSL в своем приложении. Также взгляните на это. Может быть связано с вашим случаем. - person Sanket; 10.06.2017
comment
@ Алекс, тебе повезло с лесами? - person Sanket; 11.06.2017
comment
задал другой вопрос: stackoverflow.com /вопросы/44531681/ - person Alexan; 14.06.2017
comment
проблема с сертификатом решена, но теперь я получаю следующую ошибку: Не удается разрешить службу с заданной областью "... Контекст" от корневого провайдера - person Alexan; 21.06.2017

Скопируйте содержимое следующего пути вашего приложения "bin\Debug\netcoreapp1.1" в "bin\MCD\Debug\netcoreapp1.1"

Это решило проблему для меня

person Arnab Ghosh    schedule 18.09.2017