介绍 DataRelation 对象
包含相关数据表的数据集使用 DataRelation 对象表示表之间的父/子关系并互相返回相关记录。 使用**“数据源配置向导”或“数据集设计器”**将相关表添加到数据集可为您创建和配置 DataRelation 对象。 有关返回相关记录的更多信息,请参见 如何:访问相关数据表中的记录。 有关创建数据关系的信息,请参见 如何:使用数据集设计器创建 DataRelation。
DataRelation 对象执行两种功能:
它可使与正使用的记录相关的记录可用。 如果在父记录 (GetChildRows) 中,则它提供子记录;如果正使用子记录 (GetParentRow),则它提供父记录。
它可强制约束的引用完整性,如删除父记录时删除相关的子记录。
了解真正的联接与 DataRelation 对象功能之间的差异很重要。 在真正的联接中,从父表和子表获取记录并将其放入单个的平面记录集。 当使用 DataRelation 对象时,不创建新记录集。 而关系跟踪表之间的关系并使父记录和子记录保持同步。
DataRelation 对象和约束
DataRelation 对象也用于创键和强制下列约束:
唯一约束,它保证表中的列不包含重复内容。
外键约束,可用来维护数据集中的父表和子表之间的引用完整性。
在 DataRelation 对象中指定的约束通过自动创建适当的对象或设置属性来实现。 如果使用 DataRelation 对象创建外键约束,则将 ForeignKeyConstraint 类的实例添加到 DataRelation 的 ChildKeyConstraint 属性。
仅仅通过将数据列的 Unique 属性设置为 true,或通过将 UniqueConstraint 类的实例添加到 DataRelation 对象的 ParentKeyConstraint,即可实现唯一约束。 有关暂停数据集中的约束的信息,请参见 如何:在填充数据集时关闭约束。
引用完整性规则
作为外键约束的一部分,可以指定在三个时候应用的引用完整性规则:
更新父记录时
删除父记录时
接受或拒绝更改时
可以创建的规则在 Rule 枚举中指定,并在下表中列出。
外键约束规则 |
操作 |
---|---|
对父记录所做的更改(更新或删除)同样适用于子表中的相关记录。 |
|
不删除子记录,但子记录中的外键设置为 DBNull。 使用该设置后,子记录可以作为“孤行”保留,即子记录与父记录没有关系。
注意
使用此规则会导致子表中出现无效数据。
|
|
相关子记录中的外键设置为默认值(由列的 DefaultValue 属性建立)。 |
|
不更改相关子记录。 使用该设置后,子记录会以包含对无效父记录的引用结束。 |
有关数据集表中更新的更多信息,请参见 将数据保存在数据集中。
纯约束关系
创建 DataRelation 对象时,有一个指定关系只用于强制约束(即关系不能也用于访问相关记录)的选项。 该选项允许生成效率稍高而且包含的方法比具有相关记录功能的数据集少的数据集。 但是,将不能访问相关记录。 例如,仅约束关系阻止您删除仍包含子记录的父记录,并且您无法通过父记录访问子记录。