ASP.NET 包含一些数据源控件,这些数据源控件允许您使用不同类型的数据源,如数据库、XML 文件或中间层业务对象。数据源控件连接到数据源,从中检索数据,并使得其他控件可以绑定到数据源而无需代码。数据源控件还支持修改数据。
数据源控件模型是可扩展的,因此您还可以创建自己的数据源控件,实现与不同数据源的交互,或为现有的数据源提供附加功能。
一、数据源控件比较
数据源控件 | 说明 |
使用此控件,可以通过标记在 ASP.NET 网页中使用语言集成查询 (LINQ),从数据对象中检索和修改数据。支持自动生成选择、更新、插入和删除命令。该控件还支持排序、筛选和分页。 | |
允许绑定到基于实体数据模型 (EDM) 的数据。支持自动生成更新、插入、删除和选择命令。该控件还支持排序、筛选和分页。 | |
允许您使用业务对象或其他类,以及创建依赖中间层对象管理数据的 Web 应用程序。支持对其他数据源控件不可用的高级排序和分页方案。 | |
允许您使用 Microsoft SQL Server、OLE DB、ODBC 或 Oracle 数据库。与 SQL Server 一起使用时支持高级缓存功能。当数据作为 DataSet 对象返回时,此控件还支持排序、筛选和分页。 | |
允许您使用 Microsoft Access 数据库。当数据作为 DataSet 对象返回时,支持排序、筛选和分页。 | |
允许使用 XML 文件,特别适用于分层的 ASP.NET 服务器控件,如 TreeView 或 Menu 控件。支持使用 XPath 表达式来实现筛选功能,并允许您对数据应用 XSLT 转换。XmlDataSource 允许您通过保存更改后的整个 XML 文档来更新数据。 | |
结合 ASP.NET 站点导航使用。 |
二、LinqDataSource 控件
使用 LinqDataSource 控件,可以在 ASP.NET 网页中使用 LINQ,从数据表或内存数据集合中检索数据。使用声明性标记,可以编写对数据进行检索、筛选、排序和分组操作所需的所有条件。从 SQL 数据库表检索数据时,也可以配置 LinqDataSource 控件来处理更新、插入和删除操作。通过编写 SQL 命令执行这些任务,即可实现这种配置。与在其他数据源控件中执行这些操作相比,通过使用 LinqDataSource 控件,只需编写较少的代码即可执行相同的数据操作。
三、SqlDataSource 控件
SqlDataSource 控件使用 SQL 命令来检索和修改数据。SqlDataSource 控件可用于 Microsoft SQL Server、OLE DB、ODBC 和 Oracle 数据库。
SqlDataSource 控件可将结果作为 DataReader 或 DataSet 对象返回。当结果作为 DataSet 返回时,该控件支持排序、筛选和缓存。使用 Microsoft SQL Server 时,该控件还有一个优点,那就是当数据库发生更改时,SqlCacheDependency 对象可使缓存结果无效。
四、EntityDataSource 控件
EntityDataSource 控件支持基于实体数据模型 (EDM) 的数据绑定方案。此数据规范将数据表示为实体和关系集。Entity Framework 在对象关系映射和其他方案(如 ADO.NET 数据服务)中使用 EDM。EntityDataSource 控件支持将 Entity-SQL (eSQL) 作为查询语言,它支持由 ObjectQuery<(Of <(T>)>) 类公开的查询规范。
五、ObjectDataSource 控件
ObjectDataSource 控件使用依赖中间层业务对象来管理数据的 Web 应用程序中的业务对象或其他类。此控件旨在通过与实现一种或多种方法的对象交互来检索或修改数据。当数据绑定控件与 ObjectDataSource 控件交互以检索或修改数据时,ObjectDataSource 控件将值作为方法调用中的参数,从绑定控件传递到源对象。
源对象的数据检索方法必须返回 DataSet、DataTable 或 DataView 对象,或者返回实现 IEnumerable 接口的对象。如果数据作为 DataSet、DataTable 或 DataView 对象返回,ObjectDataSource 控件便可以缓存和筛选这些数据。如果源对象接受 ObjectDataSource 控件中的页面大小和记录索引信息,您还可以实现高级分页方案。
六、XmlDataSource 控件
XmlDataSource 控件可以读取和写入 XML 数据,因此您可以通过某些控件(如 TreeView 和 Menu 控件)来使用该控件。XmlDataSource 控件可以读取 XML 文件或 XML 字符串。如果该控件处理 XML 文件,它可以将修改后的 XML 写回到源文件。如果存在描述数据的架构,XmlDataSource 控件可以使用该架构来公开那些使用类型化成员的数据。
可以对 XML 数据应用 XSLT 转换,将来自 XML 文件的原始数据重新组织成更加适合要绑定到 XML 数据的控件的格式。
还可以对 XML 数据应用 XPath 表达式,该表达式允许筛选 XML 数据以便只返回 XML 树中的特定节点,或查找具有特定值的节点等。如果使用 XPath 表达式,将禁用插入新数据的功能。
七、AccessDataSource 控件
AccessDataSource 控件是 SqlDataSource 控件的专用版本,专为使用 Microsoft Access .mdb 文件而设计。与 SqlDataSource 控件一样,可以使用 SQL 语句来定义控件获取和检索数据的方式。
八、SiteMapDataSource 控件
SiteMapDataSource 控件使用 ASP.NET 站点地图,并提供站点导航数据。此控件通常与 Menu 控件一起使用。当通过并非专为导航而设计的 Web 服务器控件(如 TreeView 或 DropDownList 控件),使用站点地图数据自定义站点导航时,SiteMapDataSource 控件也很有用。