前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板

Do You Kown Asp.Net Core - 根据实体类自动创建Razor Page CURD页面模板

作者头像
脑洞的蜂蜜
发布2018-02-02 15:45:37
1.1K0
发布2018-02-02 15:45:37
举报
文章被收录于专栏:NetCore

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实体类:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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的方式注册到项目容器中

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BlogDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BlogDbContext")));
    services.AddMvc();
}

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

代码语言:javascript
复制
{
  "ConnectionStrings": {
    "MovieContext": "Server=(localdb)\\mssqllocaldb;Database=DemoDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

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

代码语言:javascript
复制
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 2.0.0

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

代码语言:javascript
复制
Add-Migration Initial
Update-Database

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

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

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

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

然后输入以下命令:

代码语言:javascript
复制
dotnet aspnet-codegenerator razorpage -m Blog -dc BlogDbContext  -udl -outDir Pages\Blogs –referenceScriptLibraries

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

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

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

Issues

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

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

代码语言:javascript
复制
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(无密码一律不通过)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-09-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Scaffolding Template Intro
  • Hello Scaffolding Razor Page
    • Step 1 : 创建Razor Page 项目
      • Step 2 : 创建一个Model,在这里我们创建一个Blog实体类:
        • Step 3 : 创建DbContext:
          • Step 4 : 配置连接字符串并把这个DbContext通过DI的方式注册到项目容器中
            • 记得在配置文件(appsettings.json)中加入connectString:
              • Step 5 : 安装CodeGeneration package,工具-Nuget包管理器-程序包管理控制台
                • Step 6 : 添加数据迁移-更新到数据库:
                  • Step 7 : 打开终端(CMD or Powershell)
                  • Issues
                    • 自动生成的DbContext的DbSet名字不正确
                    • 写在最后
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档