DataRelation Learning
表示两个 DataTable 对象之间的父/子关系。
使用 DataRelation 通过 DataColumn 对象将两个 DataTable 对象相互关联。
例如在“客户/订单”关系中,客户表是关系的父表,订单表是子表。此关系类似于主键/外键关系。有关更多信息,请参见 浏览表间关系。
关系是在父表和子表中的匹配的列之间创建的。即,两个列的 DataType 值必须相同。
关系还可以将父级 DataRow 中的各种更改层叠到其子行。若要控制在子行中如何更改值,请将 ForeignKeyConstraint 添加到 DataTable 对象的ConstraintCollection。ConstraintCollection 确定在删除或更新父表中的值时采取什么操作。
在创建 DataRelation 时,它首先验证是否可以建立关系。在将它添加到 DataRelationCollection 之后,通过禁止会使关系无效的任何更改来维持此关系。在创建 DataRelation 和将其添加到 DataRelationCollection 之间的这段时间,可以对父行或子行进行其他更改。如果这样会使关系不再有效,则会生成异常。
DataRelation 对象包含在 DataRelationCollection 中,后者可以通过 DataSet 的 Relations 属性、DataTable 的 ChildRelations 和 ParentRelations 属性来访问。
示例
下面的示例创建一个新的 DataRelation 并将其添加到 DataSet 的 DataRelationCollection 中。
private void CreateRelation() { // Get the DataColumn objects from two DataTable objects // in a DataSet. Code to get the DataSet not shown here. DataColumn parentColumn = DataSet1.Tables["Customers"].Columns["CustID"]; DataColumn childColumn = DataSet1.Tables["Orders"].Columns["CustID"]; // Create DataRelation. DataRelation relCustOrder; relCustOrder = new DataRelation("CustomersOrders", parentColumn, childColumn); // Add the relation to the DataSet. DataSet1.Relations.Add(relCustOrder); }