ADO.NET控制作为一个高效的.NET程序语言。其混合了函数语言和物件导向程序编制语言,并且完美的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。
创建 DataRelation 所需的参数是所创建的 DataRelation 的名称以及对用作关系中父列和子列的那些列的一个或多个 DataColumn 引用的数组。 当创建 DataRelation 后,可以使用它在多个表之间导航和检索值。#t#
默认情况下,向 DataSet 中添加 DataRelation 会将一个 UniqueConstraint 添加到父表中并将一个 ForeignKeyConstraint 添加到子表中。 有关这些默认约束的更多信息,请参见数据表约束 (ADO.NET)。
以下代码示例使用 DataSet 中的两个 DataTable 对象来创建一个 DataRelation。 每个 DataTable 包含一个名为 CustID 的列,它用作两个 DataTable 对象之间的链接。 该示例将单个 DataRelation 添加到 DataSet 的 Relations 集合中。 该示例中的第一个参数指定所创建的 DataRelation 的名称。 第二个参数设置父 DataColumn,第三个参数设置子 DataColumn。
- customerOrders.Relations.Add("CustOrders",
- customerOrders.Tables["Customers"].Columns["CustID"],
- customerOrders.Tables["Orders"].Columns["CustID"]);
DataRelation 也具有 Nested 属性,如果该属性设置为 true,则来自子表的行会在使用 WriteXml 以 XML 元素形式编写时嵌套在来自父表的关联行中。 有关更多信息,请参见在数据集中使用 XML (ADO.NET)。
在某一时刻只有一个DataReader能够打开。。在ADO中,如果你打开一个连接并请求两个使用只向前的只读游标的记录集,ADO隐性地为游标的生命周期的数据存储打开第二个不在连接池中的连接,接着隐性地关闭它。在ADO.NET控制中,如果你想在同一个数据存储上同时打开两个DataReader,你必须明确地建立两个连接,每个DataReader一个。通过这种方法ADO.NET给了你对连接池使用的更多控制。
默认情况下,DataReader在每个Read方法中把整个行载入内存中。这允许你随机访问当前行的任意列。如果随机访问是不必要的,为了提高性能,把CommandBehavior.SequentialAccess传递给ExecuteReader调用。这改变了DataReader的默认行为,只在需要时才把数据载入内存。注意CommandBehavior.SequentialAccess要求你按次序访问返回的列。也就是,一旦你读过了返回的某个列,就不能再次读取它的值了。