我尝试使用脚手架来生成带有视图的MVC控制器,使用实体框架:
我创建了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; }
}
好的,我在ApplicationDBContext中添加了无参数构造函数:
public ApplicationDbContext() { }
实际上我在以前的项目中遇到了同样的问题,并手动创建了Controller和View。
但是对于这个项目,我想使用脚手架。
我做错了什么或它的VS 2017预览问题?
答案 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。
完成第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”
这解决了我的问题