ASP.NET 包括一组数据源控件,您可以使用这些控件与不同类型的数据源交互。所有数据源控件均提供相同的基本功能,与所进行交互的基础数据源无关。例如,所有数据源控件都支持用来检索数据的 Select 方法。
本主题提供 ASP.NET 中不同类型的数据源控件的有关信息。数据源控件模型是可扩展的,因此您也可以创建自己的数据源控件,以便与不同的数据源进行交互或为现有数据源提供附加功能。
SQLDataSource 控件
连接
配置 SqlDataSource 控件时,在
可以将连接字符串集中存储在应用程序的配置设置中,而不是在设计时在数据源控件中设置连接字符串。在这种情况下,可以通过编程方式检索连接字符串,并在该页运行时将连接字符串分配给数据源控件。
命令
最多可以为 SqlDataSource 控件指定四个命令(SQL 查询):
可以创建包含值的占位符的参数化命令,并在运行时提供值。下面的示例演示了典型的参数化 SQL Select 命令:
Select CustomerID, CompanyName From Customers Where city = @city
可以创建参数对象来指定在运行时命令将从何处获取参数值,例如从另一个控件、从查询字符串等等。或者您也可以通过编程方式指定参数值。
当调用
返回数据的格式
SqlDataSource 控件返回数据的形式有两种:作为数据集或作为数据读取器,您可以通过设置数据源控件的
缓存
SqlDataSource 控件可以缓存其检索的数据,这样避免了高开销的查询,从而可以增强应用程序的性能。几乎在数据变动不是太频繁的所有情况下,缓存都具有实用价值。
默认情况下不启用缓存,但是您可以通过将 EnableCaching 设置为 true 来启用缓存。缓存机制基于时间;您可以将 CacheDuration 属性设置为数据要缓存的秒数。数据源控件为每一组连接、Select 查询、参数和缓存设置组合维护一个单独的缓存。
如果您的 SQL Server 版本具有 SQL Server 的缓存依赖项功能,则 SqlDataSource 控件还可以利用此功能。此功能允许您指定一个数据库和表。在 SQL Server 报告指定的表发生更改之前,始终保留缓存中的数据。可以在 Web 应用程序中使用这种类型的缓存来产生高性能的数据访问,因为可以将数据检索次数降到最少,也就是只有在需要获取刷新的数据时才执行数据检索操作。
排序和筛选
如果您已缓存数据,并已指定数据集作为 Select 查询返回数据的格式,则还可以在不重新运行查询的情况下对数据进行筛选。SqlDataSource 控件支持
AccessDataSource 控件
XmlDataSource 控件
可以使用
通过将控件的 TransformFile 属性设置为 .xsl 文件的名称,您可以为 XML 数据指定 XSLT 转换。通过转换,可以将 XML 文件中的原始数据重新构建为更适合在您的页面中进行绑定的格式。应用转换会使数据处于只读状态。
还可以通过设置控件的 XPath 属性,对 XML 数据应用 XPath 筛选器。通过指定 XPath 表达式,可以对 XML 数据进行筛选,以便只返回 XML 树中特定级别的节点,在这些节点中查找包含特定值的节点等等。使用 XPath 表达式将禁用插入新数据的功能。
ObjectDataSource
可以通过
ObjectDataSource 控件是基于以下假设来设计的:由与之交互的对象来实现其他数据源支持的相同基本功能。例如,为了支持 ObjectDataSource 控件,业务对象必须实现执行基本数据操作(选择、更新、删除和插入)的公开方法。与其他数据源控件一样,ObjectDataSource 控件允许您指定可在运行时填充的参数。
支持选择调用的对象方法必须返回一个数据集,或者返回实现 IEnumerable 接口的另一个对象。此控件可以缓存查询结果,并且您可以指定该控件可以对缓存的数据应用的筛选器。
对象必须至少具有一个可以在不使用参数的情况下调用的构造函数,ObjectDataSource 控件将调用该构造函数来实例化对象。假设对象无状态;ObjectDataSource 控件在每次调用方法以执行数据操作时都将创建和销毁对象。
SiteMapDataSource
可以通过