您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > ASP.NET 2.0中操作数据.创建一个数据访问层
ASP.NET2.0中操作数据::创建一个数据访问层导言作为web开发人员,我们的生活围绕着数据操作。我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据。本文是研究在ASP.NET2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇。我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的ASP.NET网页组成的表现层。在打下这个后端的基础工作之后,我们将开始转向报表,示范如何显示,汇总,采集,和验证web应用的数据。这些教程旨在简明扼要,使用了许多屏幕截图,提供了按步就班(step-by-step)的指导,带你经历这个开发过程。每个教程都有C#版和VB版,并且附有涉及的完整的编码的下载。(这第一个教程比较长,但以后其他的教程将以更容易消化的篇幅推出。)在这些教程中,我们将使用置于App_Data目录内的微软SQLServer2005Express版的Northwind数据库。除了数据库文件外,App_Data目录还带有用于创建数据库的SQL脚本,万一你想使用别的数据库版本的话。如果你愿意的话,你也可以直接从微软下载这些脚本。如果你使用别的SQLServer版本的Northwind数据库的话,你需要更新Web.config文件中的NORTHWNDConnectionString设置。本教程中的web应用是个基于文件系统的网站项目,是使用VisualStudio2005专业版建立起来的。但是,所有的教程都可以在VisualStudio2005的免费版本VisualWebDeveloper中运行。在这个教程里,我们将从头开始,先创建一个数据访问层(DAL),然后在第二个教程里创建一个业务逻辑层(BLL),在第三个教程里设计页面布局和导航。以后的教程将建立在这三个教程的基础之上。在第一个教程里,我们要讨论的内容多多,所以,请打开VisualStudio,让我们动起手来!第一步:创建一个Web项目,配置数据库连接在我们开始创建数据访问层(DAL)之前,我们首先需要创建一个网站,以及建立一个数据库。我们从创建一个基于文件系统的ASP.NET网站开始。次序如下,打开文件(File)菜单,选择新的网站(NewWebSite),系统会显示一个新网站对话框,选择ASP.NET网站模板(WebSitetemplate),设置定位(Location)列表的选项为文件系统(FileSystem),然后选这一个放置这个网站的文件夹,然后选择编程语言为C#。图1:创建一个基于文件系统的网站VisualStudio会为你生成一个新的网站,同时生成一个名为Default.aspx的网页,和一个App_Data文件夹。网站生成之后,下一步是在VisualStudio的服务器资源管理器(ServerExplorer)里为你的数据库添加一个引用(reference)。把一个数据库添加到服务器资源管理器之后,你就能在VisualStudio环境里添加数据表,存储过程,视图等等。你也能查看数据库里的数据,手工或用查询生成器(QueryBuilder)的图形界面建立你自己的查询语句。此外,当我们为DAL创建强类型的DataSet时,我们需要把VisualStudio指向作为DataSet数据源的目标数据库。虽然我们可以在适当时候提供所涉及的数据库连接信息,但假如我们预先在服务器资源管理器里注册这些数据库的话,VisualStudio会自动把这些数据库填充到一个下拉列表中去。把Northwind数据库添加到服务器资源管理器中去的步骤取决于你想使用放置在App_Data文件夹里的SQLServer2005Express版本数据库,还是你想使用已经建立好了的SQLServer2000或2005数据库服务器。使用置于App_Data文件夹中的数据库如果你没有可连接的SQLServer2000或2005服务器,或者你就是想避免给数据库服务器添加数据库,你可以使用SQLServer2005Express版的Northwind数据库,该数据库位于下载源码中的App_Data文件夹里(NORTHWND.MDF)。置于App_Data文件夹里的数据库会被自动添加到服务器资源管理器中。假设你已经在你的机器上安装了SQLServer2005Express版本,那么你应该在服务器资源管理器中看到一个名为NORTHWND.MDF的节点,你可以将这个节点扩展开来,浏览其中的数据表,视图,存储过程等等(参考图2)。App_Data文件夹还可以放置微软的Access.mdb数据库文件,跟SQLServer的数据库文件类似,这些Access文件会被自动地添加到服务器资源管理器中。如果你不想用任何SQLServer数据库,那么你总归可以下载微软Access版本的Northwind数据库文件,然后将其放置于App_Data文件夹中。但记住,Access数据库没有SQLServer那么多功能,而且它并不是设计来在网站情形下使用的。此外,在后面几个教程里将用到Access数据库不支持的数据库层次的功能。连接到微软SQLServer2000或2005数据库服务器中的数据库或者,你也可以连接到安装在数据库服务器上的Northwind数据库。假如数据库服务器上尚未安装Northwind数据库的话,你首先必须运行本教程下载文件中的安装脚本来把数据库添加到数据库服务器上去,或者你也可以从微软网站上直接下载SQLServer2000的Northwind数据库以及安装脚本。安装数据库完毕之后,去VisualStudio中的服务器资源管理器,在数据连接(DataConnections)节点上按右鼠标,选择“添加连接(AddConnection)”。如果你看不到服务器资源管理器,去菜单“查看(View)”点击“服务器资源管理器”,或者按组合键Ctrl+Alt+S来打开服务器资源管理器。这会打开添加连接的对话框,在这上面,你可以设置需要连接的服务器,认证信息,以及数据库名字。在你成功配置数据库连接信息,按OK按钮之后,数据库就会被添加成数据连接节点之下的一个节点。然后,你就可以扩展数据库节点来浏览数据表,视图,存储过程等等。图2:添加一个到你的数据库服务器上的Northwind数据库的连接第二步:创建一个数据访问层与数据打交道时,一种做法是把跟数据相关的逻辑直接放在表现层中(在一个web应用里,ASP.NET网页构成了表现层)。其形式一般是在ASP.NET网页的编码部分写ADO.NET编码或者在标识符部分使用SqlDataSource控件。在这两种形式里,这种做法都把数据访问逻辑与表现层紧密耦合起来了。但推荐的做法是,把数据访问逻辑从表现层分离开来。这个分开的层被称作是数据访问层,简写为DAL,一般是通过一个单独的类库项目来实现的。这种分层框架的好处在很多文献里都有阐述(详见本教程最后的“附加读物”里的资源),在本系列中我们将采用这种方法。跟底层数据源相关的所有编码,譬如建立到数据库的连接,发出SELECT,INSERT,UPDATE,和DELETE命令等的编码,都应该放置在DAL中。表现层不应该包含对这些数据访问编码的任何引用,而应该调用DAL中的编码来作所有的数据访问请求。数据访问层包含访问底层数据库数据的方法。譬如,Northwind数据库中,有Products和Categories两个表,它们记录了可供销售的产品以及这些产品所属的分类。在我们的DAL中,我们将有下面这样的方法:GetCategories(),返回所有分类的信息GetProducts(),返回所有产品的信息GetProductsByCategoryID(categoryID),返回属于指定分类的所有产品的信息GetProductByProductID(productID),返回指定产品的信息这些方法,被调用后,将连接到数据库,发出合适的查询,然后返回结果。我们如何返回这些结果是很重要的。这些方法可以直接返回数据库查询填充的DataSet或者DataReader,但理想的办法是把这些结果以强类型对象的形式返回。一个强类型的对象,其schema是编译时严格定义好的,而相比之下,弱类型的对象,其schema在运行时之前是未知的。譬如,DataReader和普通的DataSet是弱类型对象,因为它们的schema是被用来填充它们的数据库查询返回的字段来定义的。要访问弱类型DataTable中的一个特定字段,我们需要用这样的句法:DataTable.Rows[index][columnName]。这个例子中的DataTable的弱类型性质表现在于,我们需要通过一个字符串或序号索引来访问字段名称。而在另一个方面,一个强类型的DataTable,它的所有的字段都是通过属性的形式来实现的,访问的编码就会象这样:DataTable.Rows[index].columnName。要返回强类型对象,开发人员可以创建自定义业务对象,或者使用强类型的DataSet。开发人员实现的业务对象类,其属性往往是对相应的底层数据表的字段的映射。而一个强类型的DataSet,则是VisualStudio基于数据库schema为你生成的一个类,其成员的类型都是由这个schema决定的。强类型的DataSet本身,是由继承于ADO.NET中DataSet,DataTable,和DataRow类的子类组成的。除了强类型的DataTable外,强类型的DataSet现在还包括TableAdapter类,这些类包含了填充DataSet中的DataTable和把DataTable的改动传回数据库的各种方法。注意:想了解使用强类型DataSet比之业务对象的优缺点的更多信息,请参考设计数据层组件以及在层间传输数据一文。在这些教程的架构里,我们将使用强类型的DataSet。图3示范说明了使用强类型的DataSet之应用程序的不同层间的流程(workflow)。图3:把所有的数据访问编码委托给DAL创建强类型的DataSet和TableAdapter我们开始创建我们的DAL,先给我们的项目添加一个强类型的DataSet。做法如下,在解决方案管理器里的项目节点上按右鼠标,选择“添加新项(AddaNewItem)”。在模板列单里选择DataSet,将其命名为Northwind.xsd。图4:给你的项目添加一个新的DataSet在点击“添加(Add)”按钮后,VisualStudio会问我们是否将DataSet添加到App_Code文件夹中,选择“Yes”。然后VisualStudio会显示强类型的DataSet的设计器,同时会启动TableAdapter配置向导,允许你给你的强类型DataSet添加第一个TableAdapter。强类型的DataSet起了强类型对象的集合的作用,它由强类型DataTable实例组成,每个强类型DataTable又进而由强类型的DataRow实例组成。我们将为这个教程系列要用到的每个数据表建立一个对应的强类型DataTable。让我们开始吧,先为Products表建立一个DataTable。记住,强类型的DataTable并不包括如何访问对应底层的数据表的任何信息。要获取用来填充DataTable的数据,我们使用TableAdapter类,它提供了数据访问层的功能。对于我们的ProductsDataTable,相应的TableAdapter类将包括GetProducts()和GetProductByCategoryID(categoryID)等方法,而我们将在表现层调用这些方法。DataTable的作用是在分层间传输数据。TableAdapter配置向导首先要你选择使用哪个数据库。下拉框里列出了服务器资源管理器内的那些数据库。如果你预先没有把Northwind数据库添加到服务器资源管理器里去的话,这时你可
本文标题:ASP.NET 2.0中操作数据.创建一个数据访问层
链接地址:https://www.777doc.com/doc-4347379 .html