ADO.NET使用代码方式创建关系DataRelation对象

时间:2007-05-31 来源:IT在中国 编辑:Hoker.Som 作者:IT在中国 [ ]
  ADO.NET提供了两种方式来创建DataSet中的表之间的关系。一种方式为通过编程方式创建,另一种方式是使用VB.NET提供的工具创建。

    ADO.NET提供了两种方式来创建DataSet中的表之间的关系。一种方式为通过编程方式创建,另一种方式是使用VB.NET提供的工具创建。在DataSet中,两个DataTable之间的关系用DataRelation表示。在此关系中,一个表为父表,另一个表为子表。
  每一个DataSet都有一个Relations集合属性。每个DataSet中定义的所有关系类DataRelation都保存在该集合中。由于DataSet可以包含多个表,因此也可以定义多个DataRelation表示这些表之间的关系,如在本章所创建的BorrowBookDA类中就包含了两个DataRelationDataRelation包含下列属性:
l         ChildTable 获取此关系中做为子表的DataTable
l         ChildColumns 获取子表中的列的DataColumn数组。
l         ParentTable 获取此关系中做为父表的DataTable
l         ParentColumns返回父表中的列的DataColumn数组。

   
创建DataRelation的过程包含3步。首先从具有关系的两个表中检索代表主键和外键的列,这些列的数据类型为DataColumn。其次,使用其构造函数创建DataRelation。第三,向DataSetRelations集合添加新的DataRelation。重载的DataRelation构造函数的语法如下所示:
Overloads Public Sub New(RelationName As String, ParentColumn As DataColumn, ChildColumn As DataColumn)
Overloads Public Sub New(RelationName As String, ParentColumns() As DataColumn, ChildColumns() As DataColumn)

重载的DataRelation构造函数使用父表的主键和子表的外键创建DataRelationRelationName参数指定DataRelation的惟一的名称。ParentColumns()ParentColumn参数定义父表的主键域。ChildColumns()ChildColumn参数定义子表的外键域。
   
现在,我们为BorrowBookDA创建两个DataRelation,以连接“学生信息表”、 “图书明细表”和“借出信息”。

Public Shared Sub Initialize()

    Dim drLoanToStudent As DataRelation

    Dim drLoanToBook As DataRelation

    Dim drParent As DataColumn

    Dim drChild As DataColumn

    drParent = DsBorrowBook1.借出信息.借书证号Column

    drChild = DsBorrowBook1.学生信息表.借书证号Column

    drLoanToStudent = New DataRelation("LoanInfoToStudent", drParent, drChild)

    DsBorrowBook1.Relations.Add(drLoanToStudent)

    drParent = DsBorrowBook1.借出信息.图书编号Column

    drChild = DsBorrowBook1.图书明细表.图书编号Column

    drLoanToBook = New DataRelation("LonaInfoToBook", drParent, drChild)

End Sub

    在上面的代码中,首先创建了两个变量来保存实例DataRelation时所需的两个列,还创建了两个变量来分别保存到“学生信息表”和“图收明细表”之间的关系DataRelation。然后将代表主键和外键的列保存到刚才声明的DataColumn变量。这里使用类型化DataSetDsBorrowBook1)从两个DataTable中获取“借书证号Column”列。

    其次使用作为主键和外键域的两个DatColumn创建“drLoanToBook”关系。此DataRelation表示学生到借书信息的一对多关系。最后把创建的DataRelation添加到DataSetRelations集合属性中。注意,由于类型化DataColumn是派生自Sytstem.Data.DataColumn,所以,这里使用了Sytstem.Data.DataColumn类型变量来引用两种不同的类型化DataColumn


访问() 相关评论() 打印资源 返回顶部 加入收藏

最新评论