




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一
初识ASP.NETCore任务1为何选择ASP.NETCore任务2ASP.NETCore基本术语项目1初识ASP.NETCore.ppt项目2网页基础知识.ppt项目3C#基础.ppt项目4ASPNETCore核心组件.ppt项目5ASPNETCoreMVC设计模式.ppt项目6EFCore数据访问与仓储模式.ppt项目7在页面显示数据.ppt项目8标签助手TagHelpers.ppt项目9身份验证与授权.ppt项目10发布与部署.ppt全套PPT课件任务1为何选择ASP.NETCore任务引入小王是某职业学院计算机专业的学生,寒假在家休息时,听说下学期就要开设ASP.NET应用程序开发相关的课程,他想利用假期先预习一下相关的知识。在网上输入ASP.NET,出现了很多相似或相关的术语,例如ASP、ASP+、ASP.NET、ASP.NETCore、.NET、.NETFramework、.NETCore等等,软件的版本号也让人眼花缭乱。这些术语之间有什么区别?在当前的开发环境下,该如何选择合适的版本呢?带着这些问题,小王开始了ASP.NET学习之旅。知识准备一、ASP.NET的发展历程ASP(ActiveServerPages,动态服务器页面)是微软开发的第一种服务器端脚本技术,如今常被称为经典ASP。ASP文件的后缀是.asp,运行于服务器端。当浏览器请求一个.asp页面时,该请求通过网络被发送到相应的Web服务器,Web服务器响应该请求,从硬盘或内存中获取相应的ASP文件,并将ASP文件发送到脚本引擎(asp.dll)文件中。脚本引擎将ASP文件从头到尾进行解释执行,并根据ASP文件中的脚本命令生成相应的标准格式的HTML页面返回浏览器。尽管ASP伸缩性良好且功能强大,但是它太面向代码,不算是应用程序框架,也不是企业级的开发工具。因此,微软彻底重写了底层架构,开发了.NET平台的基础结构.NETFramework。ASP.NET属于.NETFramework的一部分,是一种全新的服务器端脚本编程技术,用于使用HTML、CSS和JavaScript构建强大的网站和web应用程序,还可以创建WebApI并使用Web套接字等实时技术,提供开发人员生成企业级Web应用程序所需的服务。它不是ASP的更新版本,而是下一版本的的ASP,且不向后兼容ASP。ASP.NET文件的后缀是".aspx",可以包含HTML、XML以及脚本。ASP.NET提供了三个用于创建web应用程序的框架:WebForms、ASP.NETMVC和ASP.NET网页,用于在Windows上生成基于服务器的企业级Web应用所需的服务。WebForms:可以使用拖放事件驱动模型构建动态网站。MVC:提供功能强大、基于模式的方法实现快速、TDD友好的开发,以便创建使用最新Web标准的复杂应用程序。ASP.NET网页:提供一种将服务器代码与HTML组合在一起,以创建动态Web内容的快速、易学的简便方法。二、.NETFramework主要组成部分.NETFramework是构建、开发及运行Web应用程序和Web服务的一种平台,旨在提供一个一致的面向对象的编程环境,一个将软件部署和版本控制冲突最小化、消除脚本环境或解释环境的性能问题、且保证代码安全执行的代码执行环境。.NETFramework包括3个主要的组成部分:(1)编程工具(2)公共语言运行库(CLR)(3)基类库(BaseClassLibrary,BCL)三、ASP.NET和ASP.NETCore的区别尽管传统的ASP.NET技术性能已经很稳定,且在市场中的占比很大,但它与Windows平台深度绑定,极大地限制了.NET技术的应用范围。由此,微软逐步对.NET开放,将下一代ASP.NET定义为开源的、跨平台的开发平台,不再依赖于.NETFramework。这个项目代号为“ASP.NETvNext”的产品一度被称作ASP.NET5,直到2016年为了避免命名歧义,被正式更名为ASP.NETCore并发布1.0版。相较于ASP.NET,ASP.NETCore具有如下优点:跨平台,能够在三大操作系统Windows、MAC和Linux上进行开发和运行开放源代码(使用MITLicense),以社区为中心内置依赖项注入,对架构本身安装没有依赖有更多的安装配置方法,可以根据需要随心配置开发工具能够处理更多的请求,处理请求的效率更高、性能更好ASP.NETCore与ASP.NET4.x的主要区别四、选择.NETFramework还是.NETCore.NETFramework是微软2002年发布的用于创建Windows应用的开发平台,目前版本为4.8,并且仍由Microsoft支持。.NETFramework与.NETCore是.NET通用开发平台的两个独立的产品。(1)在以下情况,对服务器应用程序使用.NETCore:需要在多个平台(例如Windows、Linux和macOS)上运行以微服务为目标使用Docker容器需要高性能和可扩展的系统需按应用程序级别提供并行的.NET版本(2)在以下情况,对服务器应用程序使用.NETFramework:需要快速开发并部署一个.NET应用并且没有充足的时间去学习.NETCore维护使用.NETFramework的应用应用使用不可用于.NET的第三方库或NuGet包应用中的某些.NETFramework技术不支持.NET平台五、版本选择.NETCore和.NET5运行时各版本的版本号以“主要版本.次要版本.补丁”格式进行编码。例如:.NETCore3.1.8表示主要版本.NETCore3.0后的第一个次要版本的第8个补丁。主要版本包括新增功能、新的公共API图面和bug修复,由于变更的性质,这些版本预计包含中断性变更。次要版本也包括新功能、公共API图面和bug修复,还可能包含中断性变更。次要版本与主要版本的区别在于变更量较小。任务2ASP.NETCore基本术语任务引入通过比较,小王决定选择学习ASP.NETCore搭建Web项目,学习途径就从权威的官方文档开始。在查阅文档时,小王出门就遇拦路虎:官方文档中出现了大量术语,如运行时、框架、SDK、平台、编程语言等,问题是这些术语在不同的语境代表的意义也不同。不弄懂这些基本术语,后面的学习之路就寸步难行了。知识准备.NET的一些术语可能会令人困惑,因为同一个术语在不同的上下文中的用法不同。了解一些术语在一段时期内的用法变化有利于理解.NET文档。如表所示。一、运行时二、框架三、SDK四、平台五、编程语言.NET支持三种编程语言:(1)C#:是一种新式编程语言,不仅面向对象,还类型安全。C#源于C语言系列,C、C++、Java和JavaScript程序员很快就可以上手使用。(2)F#:支持函数式、命令式、面向对象的编程模式。(3)VisualBasic:在.NET语言中,VisualBasic的语法最接近于人类的普通用语,因此更易于学习。VisualBasic不受Web应用支持,但受WebAPI支持。项目总结项目二
Web应用基础知识任务1网页基础知识任务2配置开发环境任务1网页基础知识任务引入这天,小王在搜索学习资料时,突然注意到浏览器地址栏中的URL中有一个问号“?”,里面还包含自己搜索的关键字,这个网址是什么意思呢?在他的印象中,网页好像大多是以.htm或.html结尾的。他好奇地打开浏览器的开发者工具,看到了许多包含在“<>”中的元素,他看到的网页正是这些元素呈现出来的。那么他搜索关键字,对应的网页究竟是怎样生成的呢?网页中的那些标记又分别代表什么呢?知识准备一、静态网页与动态网页通常我们看到的网页,都是以.html、.shtml等为后缀的文件。在网站设计中,这种纯粹HTML格式的网页通常被称为静态网页。静态网页的内容是固定的,浏览网页内容时,服务器仅仅是将已有的静态HTML文档传送给浏览器供用户阅读。如果网站维护者要更新网页的内容,就必须手动更新所有的HTML文档。因此,静态网页的致命弱点就是不易维护,为了不断更新网页内容,就必须不断地重复制作HTML文档。所谓动态网页,是指服务器会针对不同的使用者以及不同的要求执行不同的程序,从而提供不同的服务,一般与数据库有关。二、Web工作原理Web工作原理是Web应用开发者必须了解的重要问题或概念,本节简要进行介绍。客户端和Web服务器通过HTTP协议进行通信。Web服务器指的是一个软件程序,例如Apache、Tomcat、Nginx等,它们的作用是管理Web应用。HTTP协议采用的是请求/响应模式。当用户在浏览器中输入要访问的web站点地址或在已打开的站点点击超链接,由DNS进行域名解析,找到服务器的IP地址,向该地址指向的web服务器发出一个HTTP请求,相应的Web服务器接收HTTP请求后,将URL地址转换为页面所在的服务器上的文件全名,调用相应的web应用处理请求。然后Web服务器再将响应结果返回给客户端。三、HTML常用标签HTML是HypertextMarkupLanguage(超文本标签语言)的首字母缩写,是一种用于建立Web页面的描述性语言。使用HTML编写的网页文件是标准的ASCII文件,扩展名通常为.htm或.html。本节将简要介绍HTML中常用的一些标签。掌握这些标签的用法,对网页制作可以起到事半功倍的效果。1.文档的结构标签(1)<html>标签(2)<head>标签(3)<title>标签(4)<body>标签案例——编写“HelloWorld”网页本案例利用Windows系统自带的“记事本”程序编写一个简单的网页,帮助读者加深对HTML文档结构和标签的了解。(1)打开“记事本”程序,新建一个空白的文本文件,保存在D:\sources文件夹中,命名为HelloWorld.txt。(2)在文本文件中,编写如图所示的代码:(3)关闭文件后,将文件HelloWorld.txt的后缀修改为.html,然后双击该文件,即可在浏览器中显示该文件的网页效果,如图所示。2.注释标签HTML的客户端注释标签为<!--…-->,在这个标签内的文本不会在浏览器窗口中显示。一般将客户端的脚本程序放在此标签中。3.文本格式标签文本格式标签用于控制网页中文本的样式,如大小、字体、段落样式等。(1)<font>标签 (2)<b>和<i>标签(3)<h#>标签4.排版标签(1)<br>标签:用于在文本中添加一个换行符。(2)<p>标签:用于定义一个段落。(3)<sub>和<sup>标签:分别将标签之间的文本设置成下标和上标。(4)<div>标签:用于块级区域的格式化显示。(5)<span>标签:用于定义内嵌的文本容器或区域,主要用于一个段落、句子甚至单词中。5.表格标签(1)<table>标签(2)<tr>标签(3)<th>标签(4)<td>标签6.表单标签(1)<form>标签(2)<input>标签font标签示例效果h#标签示例效果案例——创建注册页面本案例利用<input>标签创建一个注册页面。(1)打开“记事本”程序,新建一个空白的文本文件,保存在D:\sources文件夹中,命名为register.html。(2)在文件中编写如图所示的代码:(3)保存文档,然后双击文档,即可在浏览器中显示网页效果,如图所示。(4)<select>和<option>标签(5)<textarea>标签7.其它标签(1)<img>标签(2)<a>标签(3)<meta>标签(4)<link>标签(5)<style>标签 四、CSS概述CSS是CascadingStyleSheets(层叠样式表)的简称,是一种对文本进行格式化操作的高级技术。使用CSS设置页面格式时,内容与表现形式是相互分离的。页面内容位于自身的HTML文件中,而定义代码表现形式的CSS规则位于外部样式表或HTML文档的另一部分(通常为<head>部分)。在网页中使用CSS有3种常见的方式。(1)内嵌样式(2)内联样式(3)链入CSS文件示例效果案例——使用CSS格式化注册页面本实例创建CSS,对上一个案例中的网页register.html进行格式化。(1)打开网页register.html,另存为register_CSS.html。(2)在<title>标签下方添加如下CSS代码,设置页面外观。(3)保存文件,然后双击文件,在浏览器中的即可显示使用CSS布局后的网页效果,如图所示。五、JavaScript简介JavaScript(简称“JS”)是一种能与网页进行简单交互的轻量级即时编译型的脚本语言,是web开发人员必须学习的3门语言中的一门:HTML定义网页的内容,CSS描述网页的布局,JavaScript控制网页的行为。在介绍Web工作原理时提到过,一般浏览器与服务器进行交互都需要通过浏览器发送请求到服务器,服务器处理后将结果返回给客户端浏览器。为了减轻服务器的压力,一些简单的功能(例如登录前验证用户是否输入了必填信息、是否符合要求)可以通过JavaScript在客户端进行处理。案例——添加JavaScript脚本本案例在网页register_CSS.html中添加JavaScript脚本,响应“确定”按钮的单击事件。(1)将网页register_CSS.html另存为register_JavaScript.html,然后使用“记事本”程序打开文件。(2)在<head>标签范围内添加如下JavaScript代码:(3)删除<form>标签中的action属性,然后在“确定”按钮的<input>标签中添加onclick属性,属性值为定义的Login_onClick()方法,如图所示。(4)保存文件,然后双击网页文件,在浏览器中预览网页效果。单击“确定”按钮弹出一个提示对话框,显示“请确认输入信息无误”,如图所示。(5)单击“确定”按钮或对话框右上角的“关闭”按钮,即可关闭提示对话框。任务2配置开发环境任务引入“工欲善其事,必先利其器。”学习了网页的基础知识后,小王跃跃欲试想着手开始创建自己的Web项目。在学习过程中都是使用“记事本”编写简单的静态网页,要开发一个初具规模的Web项目,对于小王这个初学者来说,“记事本”显然不能胜任。还有后期的测试、运行,静态网页可以双击在浏览器中打开,但这种操作对动态网页行不通。有没有简单、高效的开发工具能帮助初学者快速创建应用程序呢?能不能不使用陌生的服务器环境,在自己的计算机上运行、部署应用程序呢?知识准备一、安装VisualStudio2019在前面的任务中,都是使用“记事本”创建网页,虽然简单但并不方便、高效。.NET提供了针对不同操作系统的集成开发环境(IDE)。VisualStudio仅在Windows上运行,具有广泛的内置功能,社区版对学生、开放源代码贡献者和个人免费。VisualStudioforMac仅在macOS上运行,用于开发适用于iOS、Android和Web的.NET应用和游戏。VisualStudioCode提供了适用于Windows、macOS和Linux的集成开发环境。本节介绍适用于在Windows操作系统上创建Web项目的开发工具VisualStudio2019。(1)在官网/zh-cn/visualstudio/下载VisualStudio2019社区版。(2)安装VisualStudioCommunity2019。安装过程中,根据需要选择工作负荷,如图所示。(3)选择完成后,单击“安装”按钮,即可开始安装。二、安装配置IIS服务器如果站点中包含动态网页,仅仅在本地计算机上是无法对站点进行完整测试的,这时需要依赖Internet服务程序。在本地计算机上安装Internet服务程序,实际上是将本地计算机构建成一个真正的Internet服务器,只是可以从本地计算机上直接访问该服务器而已。换句话说,本地计算机和Internet服务器已经合二为一。(1)单击桌面右下角的“开始”菜单找到“设置”选项,打开“Windows设置”窗口。选择“程序和功能”(2)在弹出的窗口中单击“启用或关闭windows功能”,如图所示。选择“启用或关闭Windows功能”
选中服务选项(3)单击“确定”按钮,即可开始应用所做的更改,并显示进度条。(4)打开浏览器,在地址栏中输入“http://localhost/”,按Enter键。查看IIS管理器(5)打开控制面板,查看方式设置为“大图标”,单击“管理工具”类别,打开“管理工具”窗口,然后双击“InternetInformationServices(IIS)管理器”,如图所示,进入对应的管理器窗口。(6)在“InternetInformationServices(IIS)管理器”窗口的左侧面板中展开根节点和“网站”节点,然后在节点“DefaultWebSite”上右击,从弹出的快捷菜单中选择“添加虚拟目录”命令,如图所示。双击“InternetInformationServices(IIS)管理器”选择“添加虚拟目录”命令(7)在弹出的“添加虚拟目录”对话框中设置目录的别名和物理路径,如图2-20所示。添加虚拟目录”对话框(8)在“InternetInformationServices(IIS)管理器”窗口左侧面板中右击“应用程序池”,从弹出的快捷菜单中选择“添加应用程序池”命令,如图所示。(9)在打开的“添加应用程序池”对话框中设置应用程序池的名称,选择.NETCLR的版本,托管管道模式选择“集成”,如图所示。案例——使用IIS运行网页本案例在创建的虚拟目录中添加网页文件并运行,验证IIS是否成功配置。(1)单击添加的虚拟目录sources,在对应窗口的中间面板中双击“默认文档”进入相应的窗口。(2)选中创建的虚拟目录,在“管理虚拟目录”面板中单击“浏览*:80(http)”运行网站。
添加默认文档单击“浏览*:80(http)”运行成功的默认文档项目总结项目实战本实战利用记事本编写一个网页,效果如图所示。(1)打开记事本(2)将文件保存为后缀后为.html的文件,然后双击在浏览器中预览效果。项目三
C#基础任务1认识C#任务2语法规则任务3类和对象任务1认识C#任务引入ASP.NETCore提供了实现Web项目的框架,要实现项目,还需要使用编程语言实现。小王有一定的C++基础,因此他选择C#作为开发语言。为有针对性地学习C#语法,小王要先弄明白相较于C++,C#有哪些优势点,以及C#的程序结构。知识准备一、C#简介C#(读作CSharp)是微软为了对抗Java而推出的一门面向对象的通用型编程语言,它去掉了C++和Java语言中的一些复杂特性,提供了可视化工具,能够高效地编写程序,开发PC软件、网站和APP,还能作为游戏脚本,编写游戏逻辑。C#语言具备如下几个特点:1.面向对象与其他面向对象语言一样,C#语言也具有面向对象语言的基本特征,即封装、继承、多态。2.简单易学、安全C#的构想十分接近于传统高级语言C和C++,与Java也非常相似,但相比C、C++、Java提供了更多的数据类型,并且每个数据类型都是固定大小的。3.支持跨平台最早的C#语言仅能在Windows平台上开发并使用,随着.NET框架的发展,C#已成为.NET框架的一部分,能在多个操作系统上使用,例如在Mac、Linux等。此外,还能将其应用到手机、PDA等设备上。4.开发多种类型的程序使用C#语言不仅能开发在控制台下运行的应用程序,也能开发Windows窗体应用程序、网站、手机应用等多种应用程序。二、C#与.NET的关系C#是一种运行在.NETFramework/CoreCLR上,用于创建应用程序的高级编程语言。它是专为由可执行代码和运行时环境组成的公共语言基础结构(CommonLanguageInfrastructure,CLI)设计的。.NET是一个包含.NETFramework、.NETCore和Mono等框架的通用开发平台,提供了一个跨语言的统一编程环境。.NET拥有CLI,其中包括与语言无关的运行时和语言互操作性,允许在不同的计算机平台和体系结构上使用各种高级语言,使得Internet上的各应用程序之间可以使用Web服务进行沟通。三、C#程序结构1.命名空间命名空间类似于文件夹,提供一种将一组名称与其他名称区分开的方式。2.类类使用关键字class定义,后跟类的名称。3.Main方法每一个C#程序至少有一个带有Main方法的类,它是执行程序的入口。4.语句块语句块是用于执行某个任务的表达式按逻辑顺序组织在一起的一条或多条语句。5.语句终止符在C#中,所有的语句和表达式必须以分号(;)结尾。6.注释注释是使用一些简单易懂的语言对代码进行简单的解释的方法。C#语言中包含了三种注释符:(1)单行注释符://(2)多行注释符:/*要注释的内容*/(3)文档注释符:///7.大小写的区别C#是大小写敏感的,因此变量firstVar与firstvar是不一样的。案例——打印"HelloWorld"(1)启动VisualStudio,创建一个新项目,从模板中选择语言为C#,平台为Windows,项目类型为“控制台”,然后选中“控制台应用程序”,如图所示。(2)单击“下一步”按钮,在打开的“配置新项目”窗口中输入项目名称为firstApplication,指定项目的保存路径和解决方案名称,如图3-2所示。(3)单击“下一步”按钮,目标框架选择“.NET5.0”,然后单击“创建”按钮创建项目。此时生成一个名为Program.cs的文件,创建的项目显示在“解决方案资源管理器”中,如图所示。(4)在代码编辑器中修改类名称,并在Main()方法中添加一行代码。(5)保存文件Program.cs,然后单击“运行”按钮或者按下F5键运行程序。
运行结果任务2语法规则任务引入万变不离其宗,学习一门语言,最根本的是掌握其编写规则,小王深深地明白这个道理。通过查阅资料,小王发现大多数编程语言的基本要素都是相同的,例如数据类型、常量和变量、运算符和表达式,以及最核心的流程控制。当然,不同的语言,规则编写方式也会有所不同。为顺利开发出Web项目,小王暗自给自己鼓劲,一定要打好基础。知识准备任何一门编程语言在编写代码时都必须遵循一定的规则,这个规则就是语法。C#语言是在C、C++的基础上发展而来的,因此在语法形式上有些类似。一、基本数据类型数据类型主要用于指明变量和常量存储值的类型,C#语言是一种强类型语言,要求每个变量都必须指定数据类型。1.整型表
整型取值范围2.浮点型3.字符型和字符串类型4.布尔类型浮点型取值范围常用的转义字符二、常量和变量常量和变量都是用于存储数据的容器,在定义时都需要指明数据类型,它们唯一的区别是:常量中存放的值不允许更改,而变量中所存放的值是允许更改的。常量可以看作是一种特殊的变量,只不过这种变量在定义时必须被赋值,且之后不能重新赋值或更改。案例——定义客户信息本案例分别定义字符串类型、整型、浮点型和布尔型变量初始化客户信息,最后输出客户信息。(1)新建一个控制台应用程序的项目(2)保存代码文档,按F5执行代码,运行结果如图所示。三、运算符和表达式运算符是每一种编程语言中必备的符号,能够提供对数值、字符串、逻辑值进行运算。表达式是由常量、变量、函数和运算符按照运算法则组成的计算关系式。在数据运算中,使用表达式表达想要达到的效果,使用运算符进行相关的运算。下面简要介绍C#中常见的运算符:赋值运算符、算术运算符、逻辑运算符、比较运算符、三元运算符以及运算符的优先级。1.赋值运算符
各种赋值运算符的具体说明2.算术运算符3.逻辑运算符4.比较运算符5.位运算符6.三元运算符语法说明如下:布尔表达式:条件判断表达式,通过逻辑判断,得到一个bool类型的结果。表达式1:布尔表达式的结果为True,执行该表达式得到结果。表达式2:布尔表达式的结果为False,执行该表达式得到结果。7.运算符的优先级四、流程控制语句任何一门编程语言都要面临程序的结构设计,也就是控制程序的流程,安排每行代码执行的先后次序。1.顺序执行语句顺序结构就是按照代码的顺序,逐行执行操作。2.条件判断语句如果程序有多种可能的选择,就是利用不同的条件判断结果去执行不同的语句或者代码,从而选择某一个分支。(1)if语句
(2)if..else语句(3)if..elseif…else语句案例——计算分段函数本案例编写一个求分段函数的程序,并用它来求f(1.5)的值。(1)新建一个控制台应用程序的项目SectionalFunction(2)按F5键执行上面的代码,运行结果如图所示。
3.switch...case语句switch语句属于多条件分支语句,相当于一系列的if..elseif..语句,但switch语句不是对条件进行计算以获得布尔值,而是对表达式进行求值并根据计算结果确定要执行的语句块。案例——划分成绩等级本案例使用switch...case语句根据输入的学生成绩判断等级。(1)新建一个控制台应用程序的项目(2)保存代码文档,按F5执行代码。输入76的运行结果如图所示。4.循环语句循环语句是指根据指定的条件多次执行同一段代码,重复的次数由指定的数值或条件决定,常用于检索和批量处理。(1)先进行条件判断,若条件成立,执行循环体代码,执行完之后再进行条件判断,条件成立继续,否则退出循环。(2)先不管条件依次执行操作,执行完成之后进行条件判断,若条件成立,循环继续,否则退出循环。案例——数值排序本实例分别使用while和dowhile语句对两个数值进行排序,比较两者的区别。(1)新建一个控制台应用程序的项目OrderNmbers(2)按F5键运行程序,在输出屏幕中首先输出变量a,然后根据提示输入一个整数6,赋值给变量b。此时,由于条件a>b不成立,所以while循环体中的语句并不执行,效果如图所示。(3)注释或删除主方法中的while语句,修改为do...while循环语句(4)按F5执行上面的语句,效果如图所示。(5)中断循环语句执行循环语句时,如果要跳出循环,就需要用到中断循环语句:break语句和continue语句。案例——计算数列的累和本案例通过计算一个整数序列的累和,比较break语句和continue语句的不同。(1)新建一个控制台应用程序的项目BreakDemo。(2)删除代码文件主方法Main()中的默认代码(3)按F5运行程序,显示计算结果,如图所示。(4)将代码中的break语句修改为continue语句(5)按F5运行程序,显示计算结果,如图所示。任务3类和对象任务引入既然学习面向对象的编程语言C#,类和对象自然是绕不过去的。小王觉得类和对象既熟悉又陌生,熟悉是因为它们的概念和表现形式类似自然语言,简单易懂;陌生的是类成员以及各种修饰符。该如何定义类的各种成员并使用类对象呢?这些修饰符对访问类对象有什么影响呢?知识准备一、定义类类是面向对象语言中最常用的元素,每一个C#程序都离不开类。所谓面向对象是指在编程时将任何事物都看成是一个对象来描述。对象包括属性和方法,属性是指对象固有的特征,方法则是对象的行为。类的访问修饰符:用于设定对类的访问限制,包括public、internal或者不写。修饰符:修饰符是对类本身特点的描述,包括abstract、sealed和static。类名:用于描述类的功能的字符串,最好具有实际意义,以便理解类中描述的内容。类的成员:在类中能定义的元素,主要包括字段、属性、方法。二、定义字段类的成员可分为两类:数据成员和函数成员。其中,数据成员包括与该类相关联的常量和变量(称为字段);函数成员主要包括属性、方法、构造函数和析构函数。字段的定义与前面介绍的变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。1.访问修饰符类成员的访问修饰符有4个,具体用法如下。(1)public成员可以被任何代码访问。(2)private成员仅能被同一个类中的代码访问,省略访问修饰符时,默认为private。(3)internal成员仅能被同一个项目中的代码访问。(4)protected成员只能由类或派生类中的代码访问。2.修饰符字段有两个常用的修饰符:readonly(只读)和static(静态的)。表
字段的默认值三、定义方法方法是将完成同一功能的内容放到一起,方便调用的一种方式,例如应用程序中默认生成的主方法Main()。访问修饰符可以是类成员访问修饰符中的任意一种,如果省略,默认为private。方法的修饰符包括virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)。案例——计算阶乘本案例编写一个方法,计算给定整数的阶乘。具体操作如下:新建一个控制台应用程序的项目上述代码定义了一个计算非负整数n的阶乘的方法,输入参数为整型n,返回值为整型。如果输入参数为负值,则输出一条提示信息。如果输入参数为0,则阶乘结果为1,否则利用for循环计算n!,最后输出计算结果。四、创建类对象定义了类及其中的类成员之后,就可以在程序中创建类的对象,访问类中的成员。创建类的对象,可以理解为基于一个模板定制一个对象。案例——访问类成员示例本案例定义一个类,然后创建类对象,通过调用类的方法,输出类中定义的属性。(1)新建一个控制台应用程序的项目ClassDemo。(2)在菜单栏选择“项目→添加类”命令,在当前项目中添加一个默认名称为Class1.cs的类文件(3)修改类名,并定义类成员(4)切换到Program.cs,删除主方法Main()中默认的打印语句,然后添加语句创建类对象,访问类成员函数。(5)保存所有文件,按F5运行程序,打开控制台窗口,显示运行结果。由于本例没有为属性赋值,因此输出各个属性的默认值,如图所示。(6)在主程序中添加代码,分别为自定义的三个属性赋值。(7)保存所有文件,按F5运行程序,显示运行结果,如图所示。五、构造函数与析构函数上面的实例介绍了使用“类名对象名=new类名()”的方式创建类对象的方法。“类名()”的形式实际上是系统自动生成的一个不包含参数的类的构造函数。构造函数的名称与类的名称相同。在实际应用中,如果自动生成的构造函数不能满足程序需要,通常要自定义构造函数。案例——定义Student类本案例定义一个学生类StudentInfo,包含一个自定义的构造函数为类中的属性赋值,一个成员函数用于输出学生信息,以及一个析构函数。(1)新建一个控制台应用程序的项目StudentClass。(2)在菜单栏选择“项目→添加类”命令,在当前项目中添加一个默认名称为Class1.cs的类文件。(3)切换到Program.cs,修改主方法Main()中的代码,创建类对象并赋值,然后输出指定的学生信息。(4)按F5键运行程序,结果如图所示。项目总结项目实战本实战编写C#代码,打印九九乘法表。新建一个控制台应用程序项目,在代码文件中编写如下代码:在上面的代码中,\t是转义字符,用于输出制表符。Console.Write()输出指定的字符串,不换行,Console.Writeline()语句用于换行。项目四
ASP.NETCore核心组件任务1认识ASP.NETCoreWeb程序任务2核心组件任务1认识ASP.NETCoreWeb程序任务引入经过一段时间的学习积累,小王终于有信心正式开始Web应用项目的创建。打开VisualStudio,看着众多的项目模板,小王有点不知所措了,对于初学者,选择哪个模板可以帮助自己快速开启Web项目开发之路呢?项目模板提供的文件结构中,各个目录分别有什么用呢?知识准备一、创建ASP.NETCore项目VisualStudio2019提供了丰富的项目模板,每个模板都提供了相应的代码基架,方便用户快速掌握项目的基本结构。(1)启动VisualStudio2019,单击“创建新项目”命令,打开对应的窗口。该窗口中显示最近使用的项目模板和内置的项目模板。(2)在项目模板中选择需要的模板。在模板列表顶部设置编程语言、应用平台和项目类型,可快速找到需要的模板。ASP.NETCoreWeb应用:
ASP.NETCore空:ASP.NETCoreWeb应用(模型-视图-控制器):ASP.NETCoreWebAPI:选择项目模板(3)单击“下一步”按钮配置新项目。输入项目名称和保存路径,如图所示。(4)单击“下一步”按钮,选择目标框架为“.NETCore3.1(长期支持)”;身份验证类型为“无”,并取消“配置HTTPS”复选框,如图所示。(5)单击“创建”按钮,即可创建一个ASP.NETCoreWeb应用程序,“解决方案资源管理器”面板中显示创建的项目,如图所示。二、认识项目文件打开项目的保存路径,在项目所在的文件中(如图),可以看到一个以“项目名称+.csproj”命令的文件,例如FirstWebApplication.csproj,该文件即为项目文件,后缀中的“cs”表示以C#作为开发语言。选择“编辑项目文件”命令项目文件的代码三、程序入口文件项目创建成功后,应用程序的入口文件为Program.cs,双击即可在编辑器中打开该文件,如图所示。四、程序启动文件在解决方案资源管理器中,还有一个名为Startup.cs的文件,该文件是ASP.NETCore中的启动类文件,用于配置服务和应用的请求管道。在方法CreateHostBuilder()中可以看到,语句webBuilder.UseStartup<Startup>();使用UseStartup()的扩展方法配置Startup类。双击Startup.cs在编辑器中打开启动文件,如图所示。五、程序配置提供程序在解决方案资源管理器中展开“Properties”,即可看到程序的配置提供程序launchSettings.json。双击文件名,在编辑器中打开配置提供程序,如图所示。配置提供程序“运行”下拉列表任务2核心组件任务引入小王根据所学,利用项目模板创建了一个ASP.NETCoreWeb应用项目,打开其中一个文件,小王又傻眼了——完全不知道那些预置的基架代码有什么用。他去请教老师,老师简单地给他讲解了一下ASP.NETCoreWeb应用的工作流,并建议他很有必要先了解其中涉及的几个核心组件。了解了这些,自然就看得懂其中的代码了。知识准备一、配置ASP.NETCore提供了配置框架,可以从配置提供程序的有序集中将设置作为名称或键值对。适用于各种源的内置配置提供程序有.json文件、xml文件、环境变量和命令行参数。此外,用户还可以编写自定义配置提供程序。环境变量ASPNETCORE_ENVIRONMENT受配置框架支持的值有三个:Development、Staging和Production。如果没有设置,则默认为Production。Development:开发环境,通常用于日常开发工作,可以启用未在生产中公开的功能。例如,开发异常页面,便于开发人员查找异常的根本原因并修复。Staging:演示环境,主要用于识别任何与部署相关的问题,通常配置为尽可能与实际生产环境一致的测试或者模拟环境。Production:生产环境,用于日常业务的实际环境,应配置为最大限度地提高安全性、性能和应用可靠性。案例——设置环境变量本案例介绍通过GUI修改环境变量,设置launchSettings文件的方法。(1)在VisualStudio的解决方案资源管理器中右击项目名称,从弹出的快捷菜单中选择“属性”命令。(2)在打开的属性面板中选择“调试”分类,在这里可以修改配置提供程序launchSettings.json中的设置,如图所示。(3)在“配置文件”和“启动”下拉列表框中选择通过按F5键从VisualStudio运行项目时的配置信息。(4)双击“值”字段,可以根据应用程序的运行环境修改环境变量的值。本案例修改为Staging。(5)如果要添加环境变量,单击“添加”按钮,然后分别在“键”和“值”字段中输入配置键和配置值。(6)保存设置。二、依赖注入所谓依赖注入(DI),就是把有依赖关系的类放到容器中,解析出这些类的实例的设计模式理念,目的是实现类的解耦。在项目中应用DI,有依赖关系的类之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起,从而使代码变得异常简单并且更容易理解和测试。ASP.NETCore内置依赖关系注入(DI)框架,可使配置的服务适用于应用的类。1.AddSingleton()方法该方法创建一个Singleton服务。这种注册服务是单一实例生存期服务,在第一次请求时创建Singleton服务,然后所有后续请求都使用相同的实例。2.AddTransient()方法该方法创建一个Transient服务,每次请求时,都会创建一个新的Transient服务实例,因此是暂时生存期服务,适用于轻量级、无状态的服务。3.AddScoped()方法该方法创建一个Scoped服务,是作用域生存期服务,每个客户端请求(连接)一次创建一个新的Scoped服务实例,范围内的每个请求中使用同一个Scoped服务实例。三、中间件在ASP.NETCore中,中间件是一个可组装到应用程序管道中以处理HTTP请求和响应的软件管道。ASP.NETCore使用中间件设置请求处理管道,每个中间件组件可选择是否将请求传递到管道中的下一个组件,并可在管道中的下一个组件前后执行工作。中间件处理每个HTTP请求,一系列中间件构成请求处理管道。请求处理管道需按照中间件添加到管道的顺序依次调用执行,如图所示,沿黑色箭头执行。1.通过Use()方法注册使用这种方式注册中间件时,Use()方法会对请求做一些工作或处理,例如在请求上添加一些上下文数据。2.通过Run()方法注册使用这种方式注册中间件时,Run()方法会直接返回一个响应,此时后续的中间件不会被执行。3.通过Map()方法注册使用这种方式注册中间件时,Map()方法会将请求重新定向到其他中间件路径上。了解了注册中间件的方法,接下来简要介绍常见应用场景中使用的一些中间件组件。(1)异常/错误处理(2)HTTPS重定向中间件(UseHttpsRedirection)(3)静态文件中间件(UseStaticFiles)(4)Cookie策略中间件(UseCookiePolicy)(5)路由中间件(UseRouting)(6)身份验证中间件(UseAuthentication)(7)授权中间件(UseAuthorization)(8)会话中间件(UseSession)(9)终结点路由中间件(带有MapRazorPages的UseEndpoints)案例——注册中间件示例本案例使用Use()方法和Run()方法注册中间件,帮助读者进一步掌握注册中间件的方法,熟悉中间件的工作原理及注册顺序和响应顺序。(1)启动VisualStudio2019,利用ASP.NETCoreWeb应用程序模板创建一个项目MiddlewareDemo。(2)双击打开Startup.cs文件,删除Configure()方法中的默认代码,分别使用Use()方法和Run()方法注册三个中间件。(3)按F5键运行程序,在浏览器中显示如图所示的运行结果。四、路由与终结点路由是基于URL的一个中间件框架,负责匹配传入的HTTP请求,然后将这些请求发送到应用的可执行终结点。终结点是应用的可执行请求处理代码单元,在应用中进行定义,并在应用启动时进行配置。终结点匹配过程可以从请求的URL中提取值,并为请求处理提供这些值。通过使用应用中的终结点信息,路由还能生成映射到终结点的URL。1.配置路由应用程序启动时,会将路由中间件添加到请求处理管道中,并将配置好的路由加载到路由集合。路由分为两种映射模式:传统路由和特性路由。(1)配置传统路由路由配置参数URL的具体映射信息表(2)配置特性路由五、异常处理在Startup.Configure()方法中添加以下代码,即可当应用在开发环境中运行时启用开发人员异常页,显示请求异常的详细信息;在非开发环境中使用UseExceptionHandler()添加异常处理中间件,直接显示对应的错误页面:ASP.NETCoreWeb应用程序模板在“Pages”文件夹中提供了错误页面Error.cshtml,如图所示。项目总结项目实战本实战配置传统路由,通过练习,帮助读者可以进一步理解和掌握路由配置的参数和方法。(1)启动VisualStudio,创建一个ASP.NETCoreWeb应用程序ConfigureRouting。所有ASP.NETCore模板都包括生成的代码中的路由。(2)在Startup.Configure()方法中注册路由,并进行配置。路由使用一对由UseRouting()和UseEndpoints()注册的中间件。UseRouting向中间件管道添加路由匹配,此中间件会查看应用中定义的终结点集,并根据请求选择最佳匹配。UseEndpoints向中间件管道添加终结点执行,它会运行与所选终结点关联的委托。在终结点路由中间件中,MapGet()方法定义终结点。终结点可以通过匹配URL和HTTP方法来选择,也可以通过运行委托来执行。当HTTPGET请求发送到根URL/时,将执行显示的请求委托,将字符串“HelloWorld!”写入HTTP响应。如果请求方法不是GET或根URL不是/,则无路由匹配,返回HTTP404。项目五
ASP.NETCoreMVC设计模式任务1认识ASP.NETCoreMVC任务2创建MVC应用任务1认识ASP.NETCoreMVC任务引入小王想毕业后从事电商行业,搭建一个属于自己的小型电子商务平台。通过对目前市面上主流的电商网站进行分析,小王发现这些电商平台都采用了MVC模式进行开发。为此,小王觉得有必要好好研究一下MVC设计模式的构成,以及工作原理。知识准备一、什么是MVC模式MVC模式是一种流行的Web应用程序的开发设计模式,用于实现应用程序的用户界面层的架构设计。该模式强大简洁,尤其适合应用在Web应用程序中,有3个基本部分:模型(Model)、视图(View)和控制器(Controller)。模型:表示应用数据的类,是存储或处理数据的组件,主要用于业务逻辑层对实体类对应的数据库进行操作。视图:是用户接口层组件,主要用于呈现用户界面(UI),包括输入与输出。控制器:是处理浏览器请求的类,主要负责转发请求、对请求进行处理,将数据从模型中获取并传给指定的视图。MVC模式中3个组件之间的关系如图所示。二、MVC工作原理了解MVC设计模式的工作原理有利于快速掌握MVC模式的架构和项目的开发流程。MVC模式从Web浏览器发出请求到响应的流程如图所示。任务2创建MVC应用任务引入了解了MVC模式的构成和优势,小王便开始着手准备一个简单的电子商务商店。View的定义相对比较清晰,就是用户界面,能够及时、正确地响应用户请求的控制器,以及请求过程中访问的模型实体类分别该如何定义实现分层呢?带着这些疑问,小王继续MVC学习之旅。知识准备ASP.NETCoreMVC是使用“模型-视图-控制器”设计模式构建Web应用和API的丰富框架,该框架是轻量级、开源、高度可测试的演示框架,对ASP.NETCore进行了优化,提供一种基于模式的方式,用于生成可彻底分开管理事务的动态网站。一、创建ASP.NETCoreMVC项目VisualStudio2019提供的ASP.NETCoreWeb应用(模型-视图-控制器)模板包含ASP.NETCoreMVC视图和控制器示例,可帮助初学者快速创建一个ASP.NETCoreMVC项目。案例——创建MVC项目FirstMVC本案例利用模板创建一个MVC基础入门项目。(1)启动VisualStudio2019,单击“创建新项目”选项,在“创建新项目”窗口中选择项目模板为ASP.NETCoreWeb应用(模型-视图-控制器),如图所示。(2)单击“下一步”按钮,打开“配置新项目”窗口。设置项目名称为FirstMVC,项目位置保留默认设置,解决方案名称为Demos,如图所示。(3)单击“下一步”按钮,打开“其他信息”窗口,设置目标框架为“.NETCore3.1(长期支持)”,身份验证类型选择“无”,如图所示。(4)单击“创建”按钮,VisualStudio基于指定的模板和参数创建一个可正常运行的MVC入门项目。在解决方案资源管理器中可以看到该项目的文件结构,如图所示。(5)利用组合快捷键Ctrl+F5在非调试模式下运行应用,弹出如图所示的提示对话框(6)如果信任IISExpressSSL证书,单击“是”按钮,弹出如图所示的安全警告。(7)如果信任开发证书,请选择“是”按钮,VisualStudio即可启动IISExpress并运行应用,打开浏览器显示运行结果,如图所示。二、添加控制器控制器用于按逻辑对一组操作进行定义和分组,以便共同应用路由、缓存和授权等通用规则集。操作是控制器上一种用于处理请求的方法。控制器是一个可实例化的类,创建方式有以下三种:类名称带有Controller后缀该类继承带有Controller后缀的类[Controller]特性可应用于该类案例——添加控制器DemoController本案例在MVC项目FirstMVC中添加控制器DemoController。(1)打开项目,在“解决方案资源管理器”中,右击Controllers文件夹,在弹出的快捷菜单中选择“添加”→“控制器”命令,如图所示。(2)执行命令后,弹出“添加已搭建基架的新项”窗口,在这里可选择MVC控制器模板,如图所示。(3)选择“MVC控制器-空”选项,然后单击“添加”按钮,打开“添加新项”对话框。在对话框底部输入控制器的名称,如图所示。(4)单击“添加”按钮,即可完成控制器的创建,并在编辑器中打开自定义的控制器类文件DemoController.cs。(5)根据需要,可以在控制器中定义多个操作方法,并在操作方法中输入业务处理代码。三、添加视图视图(View)用于处理应用的数据表示和用户交互,是嵌入了Razor标记的HTML模板,以.cshtml为文件扩展名,提供了一种巧妙的方法使用C#创建HTML输出。Razor标记是一段用于与HTML进行交互,生成在客户端呈现的网页的代码。MVC中的视图大多数情况下只呈现Controller提供给它的Model数据,其逻辑应尽量简单。展开解决方案资源管理器中的Views文件夹,可以看到该文件夹中包含Home文件夹、Shared文件夹和两个.cshtml文件,如图所示。运行结果展开Views文件夹中的Shared文件夹,双击_Layout.cshtml文件可以查看对应的布局代码,如图所示。上述代码呈现的页面,即为按F5键或单击“IISExpress”按钮运行程序的显示页面,如图所示。案例——为Index()方法添加视图本案例为控制器DemoController中的Index()方法添加视图文件。(1)在要添加视图的方法上单击右键,从弹出的快捷菜单中选择“添加视图”命令,如图所示。(2)在弹出的“添加已搭建基架的新项”窗口中选择视图模板,例如选择“Razor视图-空”,如图所示。(3)单击“添加”按钮,在弹出的“添加新项”窗口中输入视图名称,如图所示。(4)单击“添加”按钮,开始搭建基架并生成项目。搭建完成后,在VisualStudio的编辑区自动打开创建的视图文件Demo.cshtml,并在解决方案资源管理器中的Views文件夹中生成一个与创建的视图同名(Demo)的文件夹,如图所示。(5)在视图文件中添加要呈现的页面效果代码。(6)双击打开控制器类文件DemoController.cs,修改Index()方法的返回类型以及返回方式(7)保存文件。打开浏览器,在地址栏中输入https://localhost:44395/demo/index,按Enter键,即可显示指定的页面,如图所示。四、添加模型在MVC设计模式中,控制器接收到用户请求后,使用模型处理数据库中的数据,并为视图提供所需的模型数据。例如,如果希望在HTML表格中显示Customs类的数据,可以将View和Customs对象放在一起,Customs对象是将客户数据传递给View的模型。如果要在MVC项目中添加数据模型类,执行以下操作:(1)打开要添加模型的ASP.NETCoreMVC项目,在解决方案资源管理器的Models文件夹中右击,从弹出的快捷菜单中选择“添加”→“类”命令;或者在菜单栏选择“项目”→“添加类”命令,打开如图所示的“添加新项”窗口。(2)在“名称”文本框中输入类名称,例如Customs.cs,单击“添加”按钮,在Models文件夹中即可看到创建的类文件,在编辑器中显示该类的基架,如图所示。(3)在该类中编辑代码,例如,定义客户的基本信息五、注册MVC模式的服务使用MVC设计模式,需要在项目的Startup.cs文件中注册MVC模式的服务,同时还需要设置默认启动的控制器。(1)在解决方案资源管理器中双击Startup.cs打开文件,在ConfigureServices()方法中添加代码,将所需的MVC服务添加到ASP.NETCore的依赖注入容器中(2)在Configure()方法中,默认的启动控制器为Home,根据需要设置默认的启动器和操作方法。项目总结项目实战本实战通过MVC模式实现用户登录并显示登录信息的功能,帮助读者进一步理解和掌握创建ASP.NETCoreMVC应用程序的方法,以及MVC的设计模式。(1)启动VisualStudio,单击“创建新项目”按钮,选择项目模板为ASP.NETCoreWeb应用(模型-视图-控制器)。(2)单击“下一步”按钮,输入项目名称为UserLogin,解决方案名称为Project05,如图所示。(3)单击“下一步”按钮,设置目标框架为.NETCore3.1(长期支持),然后单击“创建”按钮,基于指定的设置创建一个ASP.NETCoreWeb应用。(4)选中解决方案资源管理器中的Models文件夹,单击“项目”→“添加类”菜单命令打开“添加新项”窗口,在“名称”文本框中输入模型类名称User.cs,如图所示。创建的项目文件结构指定模型类名称(5)单击“添加”按钮,即可在Model文件夹中添加一个模型类,如图所示。(6)在User类文件中添加用户信息(7)右击Controllers文件夹,从弹出的快捷菜单中选择“添加”→“控制器”命令,打开“添加已搭建基架的新项”窗口。在中间窗格中选中“MVC控制器-空”,单击“添加”按钮,在打开的“添加新项”窗口底部输入控制器名称UserController,如图所示。(8)单击“添加”按钮,在解决方案资源管理器中可以看到添加的控制器文件自动显示在Controllers文件夹中,如图所示。(9)在控制器文件UserController.cs的Index()方法中定义业务逻辑处理代码(10)在UserController.cs文件中右击Index()方法,从弹出的快捷菜单中选择“添加视图”命令,打开“添加已搭建基架的新项”窗口。(11)在弹出的“添加新项”窗口中,视图文件名称默认与方法名称相同,保留默认名称Index.cshtml,单击“添加”按钮完成操作。(12)在视图文件Index.cshtml中添加登录页面的HTML代码添加的控制器
创建视图(13)双击打开Startup.cs文件,在ConfigureServices()方法中添加代码注册MVC模式的服务(14)修改在Configure()方法中添加代码注册MVC模式的服务(15)单击工具栏上的“IISExpress”按钮,或直接按F5键运行程序,将自动打开浏览器,显示如图所示的登录界面。(16)在文本框中输入用户名和密码,单击“登录”按钮,即可显示输入的用户名和密码,如图所示。项目六
EFCore数据访问与仓储模式任务1EFCore数据访问任务2使用仓储模式任务1EFCore数据访问任务引入小王要在Web应用中展示一些商品信息,由于经常要更新和查询,想到了用数据库存储商品信息。要显示和查询特定商品,自然离不开数据访问。他在查阅资料时,看到网友推荐使用EFCore的功能构建高性能的数据库访问。什么是EFCore?EFCore支持哪些数据库?怎样使用EFCore访问数据库,完成查询、添加、删除和更改的操作呢?知识准备一、什么是EFCoreMVC模式提供了一个描述实体之间的关系的Model,也就是实体模型,用于将数据库中的数据呈现到网站的页面上。实体数据模型中存放的数据用于映射数据库表中字段的属性,从而获取数据库中的数据,并对其进行一系列的操作。EFCore全称为EntityFrameworkCore,是一种轻量化、可扩展、开源和跨平台的数据访问框架,是微软推荐的官方数据访问平台。该框架主要用于连接、创建、初始化数据库,并通过程序包管理器控制台(PackageManagerConsole)工具对数据库进行变更、完成数据迁移。EFCore在NuGet上的包的名称为Microsoft.EntityFrameworkCore,安装该库时需要安装4个包:Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools和一个数据库引擎(例如Microsoft.EntityFrameworkCore.sqlServer)。这4个包的详细信息如表所示。案例——添加EFCore框架本案例使用NuGet程序包管理器在项目GoodsOrder中添加EFCore框架。(1)启动VisualStudio,单击“创建新项目”按钮,项目模板选择“ASP.NETCoreWeb应用(模型-视图-控制器)”。(2)单击“下一步”按钮,在打开的“配置新项目”窗口中设置项目名称为GoodsOrder,解决方案名称为Project06,如图所示。(3)单击“下一步”按钮,设置目标框架为“.NETCore3.1(长期支持)”,单击“创建”按钮,即可基于指定的设置创建Web项目,并在解决方案资源管理器中显示自动创建的文件结构。(4)在菜单栏选择“项目”→“管理NuGet程序包”命令,如图所示,在编辑区显示如图所示的NuGet包管理器窗口。(5)单击NuGet包管理器窗口左上角的“浏览”选项卡,在搜索框中输入要搜索的包名称Microsoft.EntityFrameworkCore,然后在搜索框下方的包列表中选中要安装的包。选择要安装的包(6)在右侧窗格的“版本”下拉列表中选择要安装的包的版本,例如“5.0.12”,然后单击“安装”按钮。(7)单击“确定”按钮继续安装,弹出如图所示的“授受许可证”对话框,提示用户某些程序包要求在安装前接受其许可证条款。“预览更改”对话框“授受许可证”对话框(8)单击“我接受”按钮,开始安装Microsoft.EntityFrameworkCore包。安装成功后,在NuGet包管理器窗口中可以看到已安装的版本,如图所示。成功安装程序包的界面安装成功的程序包(9)在NuGet包管理器窗口中选择“浏览”选项卡,清空NuGet包管理器窗口左上角的搜索框,输入要安装的程序包名称Microsoft.EntityFrameworkCore.Design,选择要安装的版本,如图所示。(10)单击“安装”按钮,弹出“预览更改”对话框,如图所示。(11)单击“确定”按钮,打开“授受许可证”对话框。单击“我接受”按钮开始安装。安装成功后的界面如图所示。(12)按照上面同样的方法安装Microsoft.EntityFrameworkCore.Tools和Microsoft.EntityFrameworkCore.SqlServer程序包。成功安装后的界面如图所示。程序包安装成功界面
安装的程序包二、EFCore支持的数据库EFCore通过使用称为数据库提供程序的插件库实现对数据库的访问。EFCore支持许多关系数据库甚至非关系数据库,如表所示。三、定义实体数据模型对于EFCore,使用模型执行数据访问。模型由实体类和表示数据库会话的上下文对象构成。上下文对象允许查询并保存数据。EFCore支持以下模型开发方法:从现有数据库生成模型。对模型手动编码,使其符合数据库。创建模型后,使用EF迁移从模型创建数据库。模型发生变化时,迁移可让数据库不断演进。案例——创建实体数据模型Goods本实例在项目GoodsOrder中创建一个有关商品的实体数据模型。(1)打开创建的项目GoodsOrder,在解决方案资源管理器中右击Models文件夹,从弹出的快捷菜单中选择“添加”→“类”命令,设置类文件名为Goods.cs,如图所示。(2)单击“添加”按钮,即可在Models文件夹中看到创建的类文件。该类表示订购商品的实体数据模型。(3)在类文件Goods.cs中创建商品对象应具备的一些属性和方法(4)在类Goods中定义商品对象所具备的一些方法四、创建上下文类安装数据库引擎后,要访问数据库,应创建一个与数据库之间的连接器,也就是数据库上下文的类DbContext。DbContext是在应用程序代码中与底层数据库交互的类,作用是管理数据库连接,用于查询和保存数据库中的数据,因此该类中通常定义需要映射到数据库的数据模型。在应用程序中使用DbContext的方法如下:(1)创建一个派生自DbContext的类,命名为AppDbContext。(2)在项目中新建一个文件夹Infrastructure,并将AppDbContext存放到该文件夹中。(3)使用using关键字引用命名空间MicroSoft.EntityFrameworkCore,因为DbContext类位于该命名空间中。(4)创建一个DbContextOptions类的实例,以便DbContext类能够正常有效地执行。(5)使用类DbContextOptions的实例承载应用中的配置信息,例如连接字符串、数据库提供商等信息。(6)使用构造函数传递DbContextOptions实例。(7)使用DbContext中的第二个重载方法指定使用的配置信息,并将配置信息传递到父类DbContext中。案例——创建BloggingContext类本案例创建一个数据库上下文的类BloggingContext,在类中定义需要映射到数据库中的数据模型。(1)启动VisualStudio,基于模板创建一个ASP.NETCoreWeb应用程序BookOrder。(2)单击“添加”按钮,即可在Models文件夹中看到创建的类文件(3)修改类文件设置类文件名称五、设置数据库配置信息使用EFCore访问数据库,首先要设置数据库配置信息,然后调用数据库配置信息配置数据库提供程序。大多数数据库提供程序都需要通过某种形式的连接字符串连接到数据库。ASP.NETCore中的数据库配置信息在appsettings.json文件中进行设置。六、查询查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织。EFCore使用语言集成查询(LINQ)从数据库检索实体类的实例,通过LINQ可使用C#(或其他.NET语言)编写强类型查询。EFCore将LINQ查询的表示形式传递给数据库提供程序,反过来,数据库提供程序将其转换为数据库特定的查询语言(例如,用于关系数据库的SQL)。即使结果中返回的实体已存在于上下文中,也始终对数据库执行查询。为便于读者理解查询语句,下面简要介绍一下LINQ标准查询的常用操作符。(1)Select:投影操作符,对单个序列或集合中的值进行投影。(2)SelectMany:该操作符可将多个from子句组合起来,将每个对象的结果合并成单个序列。(3)All:限定操作符,确定序列中的所有元素是否都满足指定条件,返回一个布尔值。(4)Any:确定序列中是否有元素满足条件。(5)Contains:确定序列是否包含满足指定条件的元素。如果有返回true,否则返回false。(6)OrderBy和OrderByDescending:分别按照主要关键字将序列中的元素按照升序和降序排列。(7)ThenBy和ThenByDescending:分别按照次关键字对序列进行升序和降序排列。(8)Reverse:将序列中的元素按照从后到前的顺序反转。(9)Where:基于谓词函数筛选值。(10)Join:联接操作符,类似于T-SQL中的innerjoin,它将两个数据源相联接,根据两个数据源中相等的值进行匹配。(11)GroupJoin:联接两个序列,并对每个元素的结果匹配项进行分组,常用于返回“主键对象-外键对象集合”形式的查询,例如“产品类别-此类别下的所有产品”。(12)GroupBy:分组操作符,根据一个特定的值将序列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度果园果树病虫害防治与生物防治技术合作合同
- 2025年度酒店安全免责协议书范本解读与应用
- 2025年度时尚美甲店品牌独家经营权转让合同协议书
- 年担保公司借款合同-2025年度智慧社区建设项目
- 二零二五年度教育培训机构劳务工解除合同及教学资源共享协议
- 2025年广州工程技术职业学院单招职业倾向性测试题库完整
- 2025年甘孜职业学院单招职业倾向性考试题库往年题考
- 2025年福建农业职业技术学院单招职业倾向性测试题库及完整答案1套
- 2025年广东机电职业技术学院单招职业适应性考试题库及答案参考
- 2025年贵州经贸职业技术学院单招职业技能考试题库一套
- 体育测量与评价-第二章-体育测量与评价的基础理论课件
- 法律服务方案(投标)
- 转移的危险废物性状清单
- 高中英语-新外研版必修一unit5-The-Monarchs-Journey-公开课reading课件
- 建设项目用地预审与选址意见课件讲解
- 四年级公共安全教育全册教案(海峡教育出版社)
- 工程结构通用规范
- 《构成基础》PPT课件(190页PPT)
- 四年级道德与法治从中国制造到中国创造
- 2021-2022新教科版四年级科学下册全一册全部课件(共24课)
- 3 弃渣场施工方案
评论
0/150
提交评论