Scaffolding Template Intro

我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然后vs会根据你选择的Model自动生成相应的CURD的控制器和View,非常便利,这种就叫做 ASP.NET Scaffolding Template,之前雪燕大大有过一篇介绍,有兴趣可以看看【传送门】

大家知道近期Asp.Net Core2.0发布了,微软也推出了Razor Page来作为默认的Asp.Net Core Web项目,但一开始并没有提供Scaffolding Template(后简称ST)功能,使我们每次对于一个Model需要进行4-5个页面和PageModel的编写,代码量比Asp.Net MVC多了不少,好在ST及时出现,不过这次并没有结合到VS中,我们需要通过添加一个生成包及CMD命令来完成,虽然复杂了点,但至少编码量少了,Let’s do it!

Hello Scaffolding Razor Page

Step 1 : 创建Razor Page 项目

Step 2 : 创建一个Model,在这里我们创建一个Blog实体类:

public class Blog
{     public int BlogId { get; set; }      public string Title { get; set; }     public string Author { get; set; }    public DateTime CreatedDate { get; set; }
}

Step 3 : 创建DbContext:

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

   public DbSet<Blog> Blogs { get; set; }   

  protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().ToTable("Blog");}
}

Step 4 : 配置连接字符串并把这个DbContext通过DI的方式注册到项目容器中

public void ConfigureServices(IServiceCollection services)
{services.AddDbContext<BlogDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("BlogDbContext")));services.AddMvc();
}

记得在配置文件(appsettings.json)中加入connectString:

{  "ConnectionStrings": {    "MovieContext": "Server=(localdb)\\mssqllocaldb;Database=DemoDb;Trusted_Connection=True;MultipleActiveResultSets=true"}
}

Step 5 : 安装CodeGeneration package,工具-Nuget包管理器-程序包管理控制台

Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 2.0.0

Step 6 : 添加数据迁移-更新到数据库:

Add-Migration Initial
Update-Database

[这里一定要做下迁移,否则生成代码会不成功,我估计生成代码会去读取数据库]

Step 7 : 打开终端(CMD or Powershell)

先移步到项目目录(Program.cs和Startup.cs这个目录)

我的是:E:\project\aspnet\Demos\WebApplication4\WebApplication4

然后输入以下命令:

dotnet aspnet-codegenerator razorpage -m Blog -dc BlogDbContext  -udl -outDir Pages\Blogs –referenceScriptLibraries

ok,如果顺利你就能看到如下提示:

我们可以看到它自动创建了相应的View和PageModel。

虽然没有MVC那么便利,但至少也节约了我们不少时间。

Issues

自动生成的DbContext的DbSet名字不正确

我们看下Create.cshtml.cs代码,其中一段:

public async Task<IActionResult> OnPostAsync()
{       if (!ModelState.IsValid){        return Page();}_context.Blog.Add(Blog);     await _context.SaveChangesAsync();        return RedirectToPage("./Index");
}

可以看到 它使用了Blog作为实体类的集合名了,但在Step 3中,我使用的是Blogs,这应该是个bug,想提交的,但没有找到相应的项目。

写在最后

后天就是伟大的祖国生日了,大家节日快乐!明天去HK迪士尼好期待,嘿嘿。

后面我会把用Razor Page遇到的问题总结放上来,非常看好它,相信会越来越火的。

PS:asp.net core QQ学习群:376248054 通关密码:cnblogs(无密码一律不通过)

原文地址:http://www.cnblogs.com/inday/p/scaffolding-template-on-asp-net-core-razor-page.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

Scaffolding Template on Asp.Net Core Razor Page相关推荐

  1. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第三部分

    目录 介绍 使用代码 添加项目和项目状态处理 下载源文件 - 989.1 KB 介绍 这是一篇由多部分组成的文章的第三部分,演示了通过EntityFramework Core 2.1(EF)将C#en ...

  2. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第一部分

    目录 介绍 背景 开发环境 使用代码 开始构建UI和数据访问 EF迁移和数据库创建 摘要 创建初始对象模型和数据库并显示第一个Razor页面 下载源码(QuantumWeb) 介绍 这是一篇由多部分组 ...

  3. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第四部分

    目录 介绍 背景 使用代码 添加项目和项目技能处理 下载QuantumWeb-4.zip - 1.3 MB 介绍 这是一篇由多部分组成的文章的第四部分,演示了通过EntityFramework Cor ...

  4. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第二部分

    目录 介绍 使用代码 完整的客户CRUD 客户创造 显示客户详情 编辑客户信息 删除客户记录 完整的初始化CRUD页面 下载源代码(QuantumWeb) 介绍 这是一篇由多部分组成的文章的第二部分, ...

  5. 学习ASP.NET Core Razor 编程系列九——增加查询功能

    原文:学习ASP.NET Core Razor 编程系列九--增加查询功能 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.N ...

  6. 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二--添加一个实体 学习ASP.NET ...

  7. ASP.NET Core - Razor页面之Handlers处理方法

    简介 在前一篇文章中,我们讨论了Razor页面.今天我们来谈谈处理方法(Handlers). 我们知道可以将代码和模型放在 .cshtml 文件里面或与 .cshtml 匹配的 .cshtml.cs ...

  8. 学习ASP.NET Core Razor 编程系列十八——并发解决方案

    原文:学习ASP.NET Core Razor 编程系列十八--并发解决方案 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP. ...

  9. ASP.NET Core Razor页面禁用防伪令牌验证

    这篇短文中,我将向您介绍如何ASP.NET Core Razor页面中禁用防伪令牌验证. Razor页面是ASP.NET Core 2.0中增加的一个页面控制器框架,用于构建动态的.数据驱动的网站:支 ...

最新文章

  1. Scrum Master的职业发展路线
  2. Lnc2cancer 3.0,lncRNAs和circRNAs数据更新及分析工具使用指南
  3. centos在线安装mysql
  4. MySQL InnoDB存储引擎
  5. C#委托、事件学习之(二)——简单按钮委托事件
  6. git21天打卡day3-创建仓库
  7. DB2 V10.5 PureScale支持HADR
  8. Spring boot 之搭建
  9. 单例模式专集细节讲述
  10. java毕业设计源码介绍 基于SSM美好生活九宫格日志网日记网站
  11. python中mod函数用法_python divmod函数是如何使用的?
  12. 前端css样式如何设置内边框
  13. HUAWEI 机试题:英文输入法单词联想
  14. 在祝贺提拔的饭局上当众敬酒,别说“感谢领导”,高手都懂这4点
  15. xcode 如何添加调试设备
  16. 让自己分享的网址在QQ中更有逼格
  17. 工厂模式与策略模式之区别
  18. WEB系列(四)_uploadfile笔记
  19. 首个中国自主研发DRAM正式投片!长鑫存储迎来新CEO
  20. jquery中append、prepend, before和after方法的区别

热门文章

  1. ThinkPHP多次重复提交问题的根源
  2. 长江存储年底提供自研32层堆叠3D NAND闪存样品
  3. 本地开发时连接后台数据库时出现的错误,附自救方法
  4. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...
  5. Android文件Apk下载变ZIP压缩包解决方案
  6. Gentle.Net学习笔记四:修改代码,使用Oracle数据库
  7. 都是基于.NET平台,WPF能取代Winform吗?
  8. WPF 实现动态Windows桌面壁纸~
  9. Hello Blazor:(14)CSS隔离
  10. 02Prism WPF 入门实战 - 建项