创建基于ASP.NET core 3.1 的RazorPagesMovie项目(二)-应用模型类配合基架生成工具生成Razor页面

本节中,将学习添加用于管理跨平台的SQLLite数据库中的电影的类Movie。从ASP.NET core 模板创建的应用使用SQLLite数据库。

应用模型类(Movie)配合Entity Framework core(简称EF core,这是一种对象关系映射框架(ORM),它可以简化数据访问)使用,以处理数据库

模型类称为POCO类,因为它们与EF Core 没有任何依赖关系。它定义了数据库中存储的数据属性。

一、添加数据模型“Movie”

  1、右键单击“RazorPagesMovie”项目>"添加">"新建文件夹"。并命名为“Models”

                             

  2、右键“Models”文件夹,选择“添加”>"类",并将新类命名为“Movie”:

  

  3、双击Movie.cs文件,并添加以下属性:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;    //需要手动引用这个名称控件
using System.Linq;
using System.Threading.Tasks;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }             //定义数据库的主键
        public string Title { get; set; }       //电影名称

        //DataType属性指定数据的类型是日期。通过此用法:1、用户无需在数据字段中输入时间信息(系统会自动提供一个日期控件);2、仅显示日期,不显示时间信息
        //这个需要引用System.ComponentModel.DataAnnotations 名称空间
        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }  //电影发行日期
        public string Genre { get; set; }       // 电影的流派、主题
        public decimal Price { get; set; }      //电影价格
    }
}

  4、‘生成解决方法’,确保没有编译错误:

  

二、搭建“Movie”模型的基架

  此部分,将使用基架工具生成页面,用于对“Movie”模型执行创建、读取、更新、删除操作。俗称CRUD。

  1、创建Pages/Movies文件夹:

    右键“Pages”文件夹>"添加">“新建文件夹”,并将新文件夹命名为“Movies”:

       

  2、在新建的Movies文件夹上右键单击>"添加">"新搭建基架的项目"

  

  在弹出的“添加已搭建基架的新项”对话框中,选择“使用实体框架生成Razor页面(CRUD)”之后,点击“添加”:

  

  在弹出的“添加使用实体框架生成Razor页面(CRUD)”对话框中操作如下:

  ‘模型类’的下拉列表中选择“Movie(RazorPagesMovie.Models)”;

  “数据上下文”中,选择+(加号),在弹出的“添加数据上下文”对话框中,将自动生成具有正确命名空间的数据库上下文类:RazorPagesMovie.Data.RazorPagesMovieContext。选择“添加”

  最后,选择“添加”。

  

  然后系统开始自动搭建基架:

  

  上述步骤完成后,我们观察‘解决方案资源管理器’中发生了如下变化:

    ① appsettings.json文件:增加了用于连接到本地数据库的连接字符串

     

    ② Pages/Movies文件夹中,新增了5个文件(Create.cshtml、Delete.cshtml、Details.cshtml、Edit.cshtml、Index.cshtml),分别表示创建、删除、详细信息、编辑和索引

    ③ Data文件夹中,新增了1个文件:RazorPagesMovieContent.cs

    

   ④ Startup.cs文件中,更新了我们刚才新建的数据库上下文RazorPagesMovieContext:

    

3、初始迁移

  该部分,我们将学习使用程序包管理器控制台(PMC),它用于:

  添加初始迁移、使用初始迁移来更新数据库

  ① “工具”>“NuGet包管理器”>“程序包管理器控制台”:

    

  ② 将会默认在VS2019下方打开PMC窗口。

    分别在控制台中输入以下指令:

    Add-Migration InitialCreate

    Update-Database

    其中:migration命令,可以生成用于创建初始数据库架构的代码。该架构基于在DbContent中指定的模型;

      InitialCreate参数,用于为迁移命名。可以使用任何名称。

      Update命令,表示在尚未应用的迁移中运行Up方法。这种情况下,update在用于创建数据库的Migrations/<time-stamp>_InitialCreate.cs文件中运行Up方法。

    

   注意:这两个命令会生成同样的一个警告(其实是提示我们定义的模型类Movie中Price字段的属性decimal是没有指定的类型):

    Microsoft.EntityFrameworkCore.Model.Validation[30000]
    No type was specified for the decimal column ‘Price‘ on entity type ‘Movie‘.…………

  我们暂时忽略该警告。它将在后面的教程中得到修复。

  ③ 此时,观察解决方案资源管理器,发现多了如下的内容:

     

4、最后检查的工作,初始迁移后,检查通过依赖关系注入注册的上下文

  ASP.NET Core 通过依赖关系注入进行生成。服务在程序启动期间通过依赖关系注入进行注册。需要这些服务的组件(比如这里的Razor页面)通过构造函数提供相应的服务。

  基架工具自动创建DB上下文并将其注册到依赖关系注入容器。

  ① 检查Startup.ConfigureServices方法,添加了以下代码:

    

  ② /Data/RazorPagesMovieContext.cs文件为Movie模型协调EF Core 功能。它派生自Microsoft.EntityFramworkCore.DbContent。数据上下文指定数据模型中包含哪些实体:

    

     上面的代码,为实体集创建DbSet属性。在实体框架术语中,实体集通常和数据表相对应,实体对应表中的行。

    通过调用DBContentOptions对象中的一个方法将连接字符串名称传递到上下文。本地开发时,ASP.NET Core配置系统在appsettings.json文件中读取数据库连接字符串。

  5、测试

    ① 按下ctrl+F5,运行程序,并在地址栏中将/movies追加到原来的URL之后:

    

    ② 点击“Create New”,在打开的添加电影记录页面中录入新的记录:

        

    ③ 可以对刚新加的电影,进行“Edit”、“Details”、“Delete”操作。

  下一个文章中,我们将介绍本节中通过搭建基架生成的Razor页面,并做一些UI的改动。

原文地址:https://www.cnblogs.com/hiwuchong/p/12080266.html

时间: 2024-10-04 11:28:25

创建基于ASP.NET core 3.1 的RazorPagesMovie项目(二)-应用模型类配合基架生成工具生成Razor页面的相关文章

创建基于ASP.NET core 3.0 的RazorPagesMovie项目(一)-创建和使用默认的模板

声明:参考于asp.net core 3.1 官网(以后不再说明) 本教程是系列教程中的第一个教程,介绍生成 ASP.NET Core Razor Pages Web 应用的基础知识. 在本系列结束时,你将拥有一个管理电影数据库的应用 环境:visual studio 2019. .ASP.NET core 3.1 1.从 Visual Studio“文件”菜单中,选择“新建”>“项目” . 2.选择ASP.NET Core Web 应用程序,然后选择“下一步” . 3.项目命名为“RazorP

创建基于ASP.NET core 3.1 的RazorPagesMovie项目(三)-已搭建基架的Razor页面解释和更新

本节主要介绍在上一节中通过搭建基架而创建的Razor页面,并做一些UI改变. 一.创建.删除.详细信息和编辑页面 1.双击Pages/Movies/Index.cshtml.cs文件,这是一个Razor页面模型: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using Microsoft.AspNetCore.Mvc; 6 us

创建基于ASP.NET core 3.1的RazorPagesMovie项目(四)-使用数据库

本节介绍数据库上下文 1.打开/Data/RazorPagesMovieContent.cs .Startup.cs文件: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 using Microsoft.EntityFrameworkCore; 6 using RazorPagesMovie.Models; 7 8 namespac

基于ASP.NET Core 创建 Web API

使用 Visual Studio 创建项目. 文件->新建->项目,选择创建 ASP.NET Core Web 应用程序. 基于 ASP.NET Core 2.0 ,选择API,身份验证选择:不进行身份验证. 至此,就完成了一个ASP.NET Core项目的创建,项目中已经默认创建了一个ValuesController,F5运行项目,可以在浏览器调用已经存在的API. 参考资料: ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(4) - EF Core CodeFirst 数据库创建

概述 在 基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入 一文中,我们介绍如何快速以CodeFirst快速搭建数据库,这一章,我们来完善一下创建数据库中可以添加的验证与约束. 微软爸爸官方文档:Entity Framework Core 数据库操作 (1) 数据库迁移  add-migration [任一名称,须唯一] (2) 更新数据库  update-database (3) 删除数据库迁

基于ASP.NET Core 3.0快速搭建Razor Pages Web应用

前言 虽然说学习新的开发框架是一项巨大的投资,但是作为一个开发人员,不断学习新的技术并快速上手是我们应该掌握的技能,甚至是一个.NET Framework开发人员,学习.NET Core 新框架可以更快速掌握其中的编写,构建,测试,部署和维护应用程序. 您现有的.NET Framework应用程序可以在其他操作系统上工作.对于希望扩大类库的受众平台,或者希望在分布式应用程序的其他领域使用相同代码的开发人员来说,这是非常好的选择. .NET Core是为了重新启动某些Framework组件而为其他

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

[译]基于ASP.NET Core 3.0的ABP v0.21已发布

基于ASP.NET Core 3.0的ABP v0.21已发布 在微软发布仅仅一个小时后, 基于ASP.NET Core 3.0的ABP v0.21也紧跟着发布了. v0.21没有新功能.它只是升级到稳定的ASP.NET Core 3.0. 查看v0.20发行说明以获取新功能,增强功能和错误修复. 关于v1.0 ABP框架越来越接近v1.0.我们打算在今年10月中旬发布1.0. 现在,我们将完善测试和文档. .NET Conf 2019 微软已经在为期3天的虚拟会议.NET Conf 2019发

[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计

原文:[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计 在<读取配置数据>([上篇],[下篇])上面一节中,我们通过实例的方式演示了几种典型的配置读取方式,接下来我们从设计的维度来重写认识配置模型.配置的编程模型涉及到三个核心对象,分别通过三个对应的接口(IConfiguration.IConfigurationSource和IConfigurationBuilder)来表示.如果从设计层面来审视背后的配置模型,还缺少另一个名通过IConfigurationProvide