基于.Net Core Web MVC的图书查询系统

  • 第一章,.Net Core Web MVC配置身份验证和注册登录功能并修改默认页面
  • 第二章,.Net Core Web MVC配置邮件发送服务
  • 第三章,在.Net Core Web MVC中使用Sqlite数据库
  • 第四章,添加模型并使用EF Core生成基架&自动生成控制器和视图
  • 第五章,条件查询的设计与实现

第四章,添加模型并使用EF Core生成基架

  • 基于.Net Core Web MVC的图书查询系统
  • 前言
  • 一、EF Core是什么?
  • 二、添加图书模型
  • 三、使用EF Core生成基架
  • 四、同上述方法添加其他模型
  • 五、更新数据库
  • 六、在主页添加新页面的入口链接
  • 总结

前言

EF Core 可真是一个神奇的工具,它既可以通过模型来建立数据库,并生成简单的增删改查页面和控制器,也可以通过数据库来建立模型。重要的是不仅仅局限于一种数据库,应用范围广。

这篇文章中,将添加主要模型并通过EF Core来生成这些模型的控制器和页面。


一、EF Core是什么?

EF Core 是一个 O/RM(Object Relational Mapping)对象关系映射 框架,它也提供了对数据增删改查的基础封装,提供了Code First 的开发,它也有批量增删的功能扩展;

作者把它理解为一种提高开发效率的工具,可以通过它快速生成增删改查功能,自己再在其基础上修改能省很多事儿。

二、添加图书模型

在Models文件夹下新建Book.cs文件并使用以下代码更新文件:

using System;
using System.ComponentModel.DataAnnotations;namespace 图书查询系统.Models
{public enum bookType{哲学,政治,历史,地理,艺术,天文,文学,交通运输,生物医疗,农业,自然科学}public class Book{//主键,如果需要自定义主键可以像这样//[Key]//public Guid BookID { get; set; }public int ID { get; set; }[RegularExpression(@"^[^\s]*$", ErrorMessage = "请输入汉字、字母或数字")]//通过正则表达式设置数据合法性的规则,如果验证不合法就提示后面的ErrorMessage[StringLength(20, MinimumLength = 1, ErrorMessage = "{0} 长度必须在 {2} 到 {1} 之间.")][Display(Name = "书名")]//设置模型属性的显示名称public string BookName { get; set; }[RegularExpression(@"^[^\s]*$", ErrorMessage = "请输入汉字、字母或数字")][StringLength(20, MinimumLength = 1, ErrorMessage = "{0} 长度必须在 {2} 到 {1} 之间.")][Display(Name = "作者")]public string Author { get; set; }[Display(Name = "图书类别")]public bookType BookType { get; set; }[DataType(DataType.Date)][Display(Name = "出版日期")]public DateTime DateOfPublication { get; set; }[RegularExpression(@"^[^\s]*$", ErrorMessage = "请输入汉字、字母或数字")][StringLength(20, ErrorMessage = "{0} 长度不得大于 {1}.")][Display(Name = "出版社")]public string Press { get; set; }[RegularExpression(@"^[^\s]*$", ErrorMessage = "请输入汉字、字母或数字")][StringLength(300, MinimumLength = 10, ErrorMessage = "{0} 长度必须在 {2} 到 {1} 之间.")][Display(Name = "简介")]public string Introduction { get; set; }}
}

三、使用EF Core生成基架

在“解决方案资源管理器”中,右键单击 Controllers 文件夹,然后选择“添加”>“新搭建基架的项目”。
在“添加基架”对话框中:
选择 视图使用 Entity Framework 的 MVC 控制器。
单击 添加。 随即将显示“使用 Entity Framework 添加包含视图的 MVC 控制器”对话框:

点击添加,等待生成控制器和razor页面,如果生成失败可以检查一下是不是Nuge包的版本不一致造成的。

生成成功后可以看到多出了模型对应的控制器和页面

Create是创建图书,Delete是删除指定图书,Details是查看指定图书的详细信息,Edit是修改指定图书,Index是查看所有图书的视图,相当于一个列表。这样相当于增删改查的功能都给我们生成出来了。

四、同上述方法添加其他模型

作者另外添加了公告功能、收藏功能、还有一个简单的权限管理功能。前两个功能也是像上面一样添加完模型后生成基架,其中权限管理功能改动较大,不适合使用基架。会在后续章节中详细写权限管理功能。

附三个模型代码,可根据自己的需要来修改。

公告的模型

using System;
using System.ComponentModel.DataAnnotations;namespace 图书查询系统.Models
{//公告类public class Announcement{public int ID { get; set; }[Required][StringLength(30, MinimumLength = 2)][Display(Name = "公告标题")]public string Name { get; set; }//公告标题[DataType(DataType.Date)][Display(Name = "发布时间")]public DateTime Time { get; set; }//发布时间[Display(Name = "公告内容")]public string Content { get; set; }//公告内容}
}

收藏功能的模型

using System;
using System.ComponentModel.DataAnnotations;namespace 图书查询系统.Models
{public class Collection{[Key]public Guid ID { get; set; }//主键public string UserID { get; set; }//使用的用户类是IdentityUser,这里对应的是IdentityUser中的主键public int CaseID { get; set; }//图书类的主键}
}

权限管理功能的模型

using Microsoft.AspNetCore.Identity;namespace 图书查询系统.Models
{public class UserWithRoles : IdentityUser{public string RoleType { get; set; }}public class ManageUsersViewModel{public IdentityUser[] Root { get; set; }public IdentityUser[] Admin { get; set; }public IdentityUser[] Everyone { get; set; }}
}

五、更新数据库

从“工具”菜单中,选择“NuGet 包管理器”>“包管理器控制台”(PMC)。
在 PMC 中,输入以下命令:(如果已经有迁移记录需要先将旧的迁移记录删掉,第一条指令才不会执行失败,要不然将InitialCreate改个其他名字也可以~)

Add-Migration InitialCreate
Update-Database

六、在主页添加新页面的入口链接

在Views/Home/Index.cshtml文件中添加一个a标签就可以了

<a class="navbar-brand" asp-area="" asp-controller="Books" asp-action="Index">图书查询系统</a>

如图:

这样就可以访问到刚才添加的内容了。

生成后的页面可能会出现下面这种情况~

我们会发现图书类别选择不了数据,这是由于视图没有绑定枚举类造成的,下面是关于select标签绑定枚举类型的方法

总结

本文主要记录了通过模型快速添加基架,自动生成相应的控制器和页面的内容。在后续章节中将会先实现图书检索功能再实现收藏功能。

以上就是关于.Net Core Web MVC中使用Sqlite数据库的内容了。如果您觉得这篇文章对您有帮助,还请不要吝啬您手里的赞。同样,如果您觉得这篇文章有误,请您指正批评,作者将感激不尽!

基于.Net Core Web MVC的图书查询系统——第四章,添加模型并使用EF Core生成基架自动生成控制器和视图相关推荐

  1. Asp.Net Core 6.0 Mvc入门 图书查询系统 附带源码下载

    Asp.Net Core 6.0 MVC 入门 简介 目标 第一章 创建Asp.Net Core Web应用 第二章 从Model开始 第三章 Model之后皆基架 第四章 运行应用 第五章 数据搜索 ...

  2. ASP .NET Core Web MVC系列教程二:添加控制器

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程一:创建一个W ...

  3. ASP .NET Core Web MVC系列教程三:添加视图

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程二:添加控制器 ...

  4. ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序

    本系列教程翻译自微软官方教程,官方教程地址:Get started with ASP.NET Core MVC | Microsoft Docs 本系列教程介绍了构建MVC Web应用程序的基础知识. ...

  5. ASP .NET Core Web MVC系列教程四:添加模型

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 上一个教程:ASP .NET Core Web MVC系列教程三:添加视图 ...

  6. ASP .NET Core Web MVC系列教程一:创建一个Web应用程序

    系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 从Visual Studio中选择" 创建新项目". 选 ...

  7. asp.net core web mvc之异常

    与web api类似,asp.net core web mvc模板也是利用ExceptionHandler来处理错误,在starup的Configure配置数据发生时导向的/home/error pu ...

  8. android模板 警务,基于Android移动手机平台的警务查询系统

    摘要: 移动计算作为一种新的计算模式改变了人们使用信息的方式,使人们使用信息不再受时间和地点的限制.随着通讯技术的迅猛发展,手机.PDA等移动数字终端设备已经大量普及使用,在移动中获取信息的需求也越来 ...

  9. 基于区块链的学生课程成绩查询系统

    基于区块链的学生课程成绩查询系统 [摘 要]传统成绩管理系统存在数据易窜改的问题.本文根据区块链不可窜改的原理设 计并实现课程成绩查询系统.系统基于以太坊技术开发,采用 Node.js 作为服务器后端 ...

最新文章

  1. dubbo启动顺序问题
  2. openstack 云主机关机,自动running
  3. argparser_Java命令行界面(第22部分):argparser
  4. extundelete反删除总结
  5. 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法
  6. 华为nova 8 Pro王者荣耀定制版曝光:内置小鲁班定制主题 电池盖镭雕小鲁班
  7. Java代码发送POST请求
  8. SuperSocket架构设计示意图【转】
  9. 【RecSys】推荐系统和计算广告经典算法论文及实现总结
  10. 孪生网络图像相似度_Siamese network 孪生神经网络一个简单神奇的结构
  11. 什么是网络处理器?网络处理器有哪些应用场景?
  12. 预约移民后服务器不显示,玩家预约凌烟阁服务器瞬间成功,这算不算被几率
  13. Java中三元运算符
  14. 【书影观后感 五】你的名字
  15. dul恢复oracle数据,学习笔记:Oracle dul数据挖掘 使用DUL数据恢复软件恢复分区表中...
  16. 【免费资源必备】LingoDeer,扫描全能王直装版等五款APP让你享受上千个免费资源
  17. java 分析内存_Java 内存查看与分析
  18. Mycat 读写分离、主从切换、分库分表的操作记录
  19. python异常-TypeError: ‘tuple‘ object is not callable.当不同的环境下同一个语句运行结果不同时,不如重启程序、更改不相关变量试试
  20. 情商高的人的特点以及提高情商要做的事——《应该给孩子的50堂情商课》读后有感

热门文章

  1. 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率
  2. nodejs基于微信小程序的图书销售商城系统 uniapp 小程序
  3. abd获取手机应用的安装包
  4. Charles安装及使用教程
  5. 数据分析与挖掘(一)误差与精度
  6. Quartus II 11.0破解要点(与低版本的不同)
  7. 中文文本纠错任务简介
  8. android WindowManager 应用内部悬浮窗口总结
  9. Google Earth Engine(GEE)批量下载不透水面数据
  10. doolittle分解法解线性方程