控制器脚手架在ASP.NET Core 2预览版{2017}的VS 2017预览版中不起作用

时间:2017-06-10 03:59:59

标签: asp.net-core entity-framework-core visual-studio-2017 asp.net-mvc-scaffolding asp.net-core-2.0

我尝试使用脚手架来生成带有视图的MVC控制器,使用实体框架:

enter image description here

我创建了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")));

当然我有House模型:

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; }
}

我收到了以下错误:enter image description here

好的,我在ApplicationDBContext中添加了无参数构造函数:

public ApplicationDbContext() { }

并收到以下错误:enter image description here

实际上我在以前的项目中遇到了同样的问题,并手动创建了Controller和View。

但是对于这个项目,我想使用脚手架。

我做错了什么或它的VS 2017预览问题?

2 个答案:

答案 0 :(得分:2)

你可能会错过这部分 -

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

在ASP.NET Core 2.0项目中启用脚手架并将模型名称创建为&#39; House&#39;后,请按照以下步骤操作 -

第1步:右键单击解决方案资源管理器中的Controllers文件夹,然后选择添加&gt;新的脚手架项目。

第2步:使用实体框架&#39;选择&#39;带视图的MVC控制器然后单击“添加”。

步骤3:在添加控制器中,选择“房屋模型”并使用加号(+)来创建新的AppDbContext。它还将添加上面提到的AppDbContextFactory。

enter image description here

完成第3步后,您将在Controllers文件夹中找到HousesController,并在views文件夹中找到相应的Houses文件夹。

这是我的AppDbContext看起来像 -

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

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

希望这有助于进一步发展。

答案 1 :(得分:0)

复制应用程序的以下路径的内容 “斌\调试\ netcoreapp1.1” 至 的 “bin \ MCD \调试\ netcoreapp1.1”

这解决了我的问题