• 1
  • 2
  • 3
  • 4
  • 5
asp.net空间 首 页  »  帮助中心  »  虚拟主机  »  asp.net空间
ASP.NET 2.0 中改善数据访问的新工具介绍
发布日期:2015-10-10 13:10:16

  ASP.NET 2.0 中改善数据访问的新工具介绍

  在.NET 问世以前,用传统的 ASP 生成数据网格为了在遍历 ADO 记录集的同时即时生成 HTML 表,通常需要编写大量的代码,非常的繁杂又浪费时间和精力。更新后的ASP.NET 1.x  弥补了这一缺点,ASP.NET 1.x 通过允许您将基于 XML 的 DataSet 绑定到 ASP.NET DataGrid 控件,从而使这种类型的开发变得更加简便和快捷,并且大大减少了生成网格所必需的大量代码。虽然新一代的ASP.NET 1.x 解决了编写代码的数量,可是还有些问题无法解决,使得这种类型的开发依旧很费事。传统的 ASP 和 ASP.NET 1.x 都要求代码实现分页、排序、编辑和行选择功能。

     今天这里要给大家介绍 ASP.NET 2.0 中的改进功能很完美的解决了这个难题,既可以显著减少这些代码的数量,有以产生带有完整分页、排序和编辑功能并填充了数据的网格。首先,更新后的ASP.NET 2.0 引入的一系列可以改善数据访问的新工具,其中包括几个数据绑定控件和数据源控件。新增种类的数据源控件可以消除 ASP.NET 1.x 中要求的大量重复性代码。ASP.NET 2.0 中的改进包括新增的双向绑定表达式、增强的缓存和其他新功能,以及几个新增的都可以数据绑定到新的数据源控件的 ASP.NET 2.0 控件。例如,您可以很容易地将 SQL 语句或存储过程与数据源控件相关联,并且将它们绑定到数据绑定控件。更令人感到印象深刻的是,通过 ObjectDataSource 控件可以简化开发和减少代码,并且仍然可以在 n 层体系结构的不同层中抽象业务和数据访问逻辑。

  我们都知道大多数企业应用程序都是在多层体系结构之上生成的,这种体系结构会有一个使用一个或多个后端数据库的数据访问层,以及有一个用于存放业务逻辑的中间层。接下来本文会详细讲述 ObjectDataSource 可以十分完美地与多层组件集成。首先,您可以通过将 ObjectDataSource 控件链接到业务对象,然后您就可以充分利用现有的多层体系结构来生成完善的 Web UI,并且能够显著减少代码的效果。除此之外,ObjectDataSource 控件还存在着一些特殊的属性,对您也大有帮助,可以使您可以绑定到 ASP.NET 2.0 和 ADO.NET 2.0 中新近增强的强类型 DataSet 和数据组件。

  数据绑定控件

  我们都知道要使用数据源控件之前,必须具有一个数据绑定控件用来将它们绑定。在ASP.NET 2.0 中新增有几个的数据绑定控件,其中包括 GridView、DetailsView 和 FormView 控件。如果您喜欢 ASP.NET 1.x DataGrid 控件,那么您会更加喜欢 ASP.NET 2.0 GridView 控件,因为GridView 不仅拥有DataGrid 的优点,还在DataGrid 的基础上做了改进。例如,GridView 可以绑定到新的数据源控件,并且可以用来实现排序、编辑和分页 — 它们需要的代码都比 DataGrid 少得多(有关 GridView 的详细信息,请参阅 Dino Esposito 在 MSDN?Magazine 的 2004 年 8 月刊中发表的文章)。

  要将 GridView 绑定到数据源控件,需要将 GridView 的 DataSourceID 属性设置为数据源控件的 ID。还可以设置 GridView 的其他几个属性来增强外观和用户交互:

  DataSourceID="sdsOrdersDataSource"

  AutoGenerateColumns="True">

  除此之外的其他控件(如DropDownList)也可以绑定到数据源控件。例如,DropDownList 控件可以绑定到检索雇员列表的 SqlDataSource 控件。雇员的全名可以显示在 DropDownList 中,而 EmployeeID 可以作为控件的基础数据值字段绑定到该控件。下面示例定义了一个 DropDownList,它将可以显示可供选择的客户名称的列表。客户数据被绑定到一个名为 sdsCustomerDataSource 的 SqlDataSource 控件,该控件可获得客户的 CompanyName 和 CustomerID 字段的列表:

  DataSourceID="sdsCustomersDataSource"

  DataTextField="CompanyName"

  DataValueField="CustomerID">

  我们可以明显看到在 ASP.NET 2.0 中,将控件绑定到数据源控件的操作是非常简单和便捷的,并且不需要任何处于代码隐藏中的代码。但是它并没有完全失去从前的绑定方式,您仍然可以选择编写代码以显式绑定到控件,随您自己的意愿决定。而且数据绑定控件的数据源和 DataMember 属性与 ASP.NET 1.x 相比已经得到了改进。

  数据源控件

  前文也介绍了在 ASP.NET 2.0 中新增有几个数据源控件,例如,SqlDataSource、SiteMapDataSource、XmlDataSource、ObjectDataSource和AccessDataSource  。它们全都可以用来从它们各自类型的数据源中检索数据,并且可以绑定到各种数据绑定控件。数据源控件减少了为检索和绑定数据甚至对数据进行排序、分页或编辑而需要编写的自定义代码的数量。

  每个数据源控件的本质没有什么不同,它们都具有类似的属性,这样的原因是便于它们各自的数据源进行交互。当然,它们也有不同的功能属性,生成 SiteMapDataSource 和 XmlDataSource 是为了检索分层数据,而生成其他数据源控件是为了检索带有列和行的基于集合的数据。专门生成 AccessDataSource 以便从 Access 数据库中检索数据。SqlDataSource 可以用来从任何 OLE DB 或符合 ODBC 的数据源中检索数据。

  命令类型和参数

  SqlDataSource 控件具有四个命令属性,您可以设置这些属性以告诉 SqlDataSource 如何获得、插入、更新和删除它的数据。可以将 SelectCommand 属性设置为 SQL 语句或存储过程。UpdateCommand、DeleteCommand 和InsertCommand  属性用于告诉 SqlDataSource 使用哪些 SQL 语句(或存储过程)来修改基础数据库中的数据。显示了一个 SqlDataSource,它将它的 SelectCommand 和 UpdateCommand 属性设置为参数化的 SQL 语句。这里需要您注意一点,就是UpdateParameters 使用 Parameter 元素来指示要用于参数的字段的名称和数据类型。在将 GridView 绑定到该 SqlDataSource 以后,这些 UpdateParameters 值就被绑定到受影响行的具有相同名称的列。

  除此之外,数据源控件还可以使用来自其他控件的参数。例如,数据源控件可以检索给定客户的所有订单。在这种情况下,CustomerID 可以是传递给 SqlDataSource 控件的 SelectCommand 属性的 SQL 语句或存储过程的参数。还可以从其他控件(例如,DropDownList)检索 CustomerID,并将其直接传递到 SqlDataSource 控件的 SQL SelectCommand 中。

  您可以将控件的值直接链接到 SqlDataSource 控件的任一 SQL 语句(SelectCommand、InsertCommand、UpdateCommand 或 DeleteCommand)的参数,还可以指定究竟要将控件的哪个属性用于该参数。例如,如果您在上一个示例中不需要 DropDownList 的默认属性,而是需要它的 DataTextField,则可以将 ControlParameter 的 PropertyName 属性设置为 DataTextField。

  除了 ControlParameter 以外,还可以将其他参数类型用于数据源控件。如果您要使用新的 ASP.NET 个性化功能,则可以使用 ProfileParameter 从配置文件对象中检索参数的值。接下来,还有几个从标准 Request 对象的集合中检索它们的数据的参数对象类型。例如,CookieParameter 可以用来从 Cookie 中检索参数的值。QueryStringParameter 从任意请求字符串变量中获得它的值,而 FormParameter 从 HTML 窗体的输入字段中获得它的值。最后,SessionParameter 可以用来从会话变量中检索它的值。这些类型的参数为数据源控件提供了多个有关如何设置它们的参数值的选项。