【Asp.net入门07】第一个ASP.NET 应用程序-创建数据模型和存储库
2016-09-26 13:15
561 查看
1.理解概念
先理解一下两个概念。模型
模型是指数据的结构类型,以及可调用的方法。对面向对象编程方法来说,其实就是类。模型类就是一个描述数据的类。只有把数据按一定方式描述出来,我们才能在程序中方便地使用它。
存储库
直白解释就是存储数据的仓库。通常就是用数据库来存储数据,当然也有文件存储等其他存储方式。存储库的作用很显然是将数据永久保存起来。
2.创建数据模型
我们在【Asp.net入门06】第一个ASP.NET 应用程序(4)-案例说明中定义的案例项目比较简单,只需要一个简单的数据模型。下面是添加这个数据模型(类)的操作步骤。操作步骤
第一步:在Solution Explorer(解决方案资源管理器,记住这两个单词,以后不解释了)中右键单击PartyInvites项目(注意是点击项目,不是点击解决方案),然后从弹出菜单中选择Add→Class(类)。(另一种方法是从弹出菜单中选择“新建项”也是一样的效果)提示 如果没有看到Class菜单项或该菜单项处于禁用状态,说明Visual Studio调试器可能正在运行。当它正在运行应用程序时,Visual Studio会限制你对项目进行更改。请从Debug菜单中选择Stop Debugging(停止调试),然后重试。
第二步:第一步之后,Visual Studio将会显示Add New Item(添加新项)对话框,其中包含你可以添加到ASP.NET项目中的所有项的模板。确保“类模板”处于选中状态,将其名称设置为GuestResponse.cs,然后单击Add按钮。Visual Studio将创建一个新的C#类文件,并打开文件以供编辑。设置该文件的内容,使其与代码清单1-4的内容相一致。
代码清单1-4 GuestReponse类
代码解释
(1)类成员:属性上述代码是一个C#类的定义。其中,类名称是GuestResponse,该类有4个成员,这种成员在C#中有一个专门的名字:属性。其实它相当于java中的getXXX和setXXX成员方法。上述成员属性是一种简化写法,完整写法是:
图2 Name属性的完整写
提示 java中给一个成员变量提供读写功能的写法是: class GuestResponse{ private String name; public String getName(){ return name; } public String setName{String n}{ name = n; } }
(2)可空类型:bool?
bool类型变量可以赋的值只有两个:true和false。bool?也是一种数据类型,bool?变量可以赋的值有三个:true、false和null。null表示既不是true也不是false,值为空。后面将解释WillAttend属性选择这种数据类型的原因。
3.创建存储库
GuestReponse类实例表示晚会嘉宾的回函。这需要一个存储库来存储所创建的GuestResponse对象。在实际应用中,此存储库通常为数据库。我们后面会创建一个更加真实的ASP.NET应用程序时,将介绍如何设置和使用数据库。在本章中,我们只需要一种简单快捷的存储方法,因此,示例将对象存储在内存中。这样做的好处是方便,但每次停止或重新启动应用程序,数据都会丢失。对现实中的Web应用程序来说,这可能是一个奇怪的选择,但就本章来说,这是一个不错的选择。要定义存储库,在项目中添加一个新的类文件ResponseRepository.cs,这个类的作用是实现实现将数据存储在内存中,并对数据进行读写。请确保该文件的内容与代码清单1-5的内容相一致。
代码清单1-5:ResponseRepository.cs
代码分析
第11句:实例化一个链表,链表里存放GuestResponse对象。第18句-21句:返回包含所有受邀者信息的链表。很明显,这是一个成员函数,并不是属性或者成员变量。IEnumerable<T>是一种接口类型,因为List<T>是继承自IEnumerable<T>的,所以返回的resposes对象是没有问题的。这涉及到使用接口实现多态的知识,这里不专门展开,请自行参考浅谈C# 多态的魅力(虚方法,抽象,接口实现)
思考
请课后自行学习接口的知识,弄清接口的作用和基本用法,并编写一个简单的接口程序。
第23句-26句:往存储库中增加一个邀请(GuestResponse对象)。这里是直接增加到内存链表responses对象中(实际项目中往往是写到数据库里)。
第10句和第13-16句:这是一种软件设计模式,名称叫单例模式,简单点说就是保证这个程序在运行时,系统中只有一个ResponseRepository实例。详细介绍请参考:C#设计模式(1)——单例模式
存储库提供了各种用于创建、读取、更新和删除数据对象的方法(统称为CRUD方法,即Create、Read、Update、Delete),但我们只需要读取此应用程序中的所有数据对象,并向其中添加新对象即可。后面将介绍更加典型的存储库。
相关文章推荐
- 译文:使用MVC5的Entity Framework 6入门(六)——为ASP.NET MVC应用程序创建更复杂的数据模型
- [06] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型
- 【Asp.net入门11】第一个ASP.NET 应用程序-创建摘要视图
- Contoso 大学 - 1 - 为 ASP.NET MVC 应用程序创建 EF 数据模型
- 【Asp.net入门08】第一个Asp.net应用程序-创建窗体并设置其样式
- 【Asp.net入门5-02】创建数据模型和存储库
- 【Asp.net入门03】第一个ASP.NET 应用程序-创建ASP.NET项目
- [07] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据
- Contoso 大学 - 1 - 为 ASP.NET MVC 应用程序创建 EF 数据模型
- asp.net core高级EF Core2.0数据模型设计创建
- [09] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序使用异步及存储过程
- 【EntityFramework系列教程一,翻译】为ASP.NET MVC创建一个数据模型
- 【Asp.net入门05】第一个ASP.NET 应用程序-测试Asp.net程序
- (WebSite----Asp.Net Configuration----->无法连接到SQL Server数据库------>选择数据存储区---->应用程序当前被配置为使用提供程序:AspNetSqlProvider)解决方案
- [08] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据
- MVC中使用EF(4):ASP.NET MVC 创建更复杂的数据模型
- 在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程
- 译文:使用MVC5的Entity Framework 6入门(八)——为ASP.NET MVC应用程序更新相关数据
- Asp.net mvc 3.0入门教程之五——从控制器访问模型数据
- 使用Visual Studio Code创建第一个ASP.NET Core应用程序