Share via


DataRelation 物件簡介

包含相關資料表的資料集會使用 DataRelation 物件,以便表示資料表之間的父/子關聯性,以及互相傳回關聯的資料錄。 使用 [資料來源組態精靈] 或 [DataSet 設計工具],將相關資料表加入至資料集時,便會為您建立和設定 DataRelation 物件。 如需傳回相關資料錄的詳細資訊,請參閱 HOW TO:存取關聯 DataTable 中的資料錄。 如需建立資料關聯的詳細資訊,請參閱 HOW TO:以 DataSet 設計工具建立 DataRelation

DataRelation 物件會執行兩項功能:

  • 可讓您取得與正在使用的資料錄關聯的資料錄。 如果您正在父資料錄 (GetChildRows) 中,會提供子資料錄,而如果正在使用子資料錄 (GetParentRow),則會提供父資料錄。

  • 可強制執行條件約束以維護參考完整性 (Referential Integrity),例如當您刪除父資料錄時,也會刪除關聯子資料錄。

您必須瞭解,真正的聯結 (Join) 和 DataRelation 物件的功能是不同的。 在真正的聯結中,資料錄是從父和子資料表取得,然後放入單一的一般資料錄集。 當您使用 DataRelation 物件時,並不會建立新的資料錄集。 然而,關聯會追蹤資料表之間的關聯性,並且使父和子資料錄保持同步。

DataRelation 物件和條件約束

DataRelation 物件也可用來建立和強制執行下列條件約束:

  • 唯一的條件約束,保證資料表中的資料行不會重複。

  • 外部索引鍵條件約束,可用來維護資料集內父和子資料表之間的參考完整性。

您在 DataRelation 物件中指定的條件約束,是透過自動建立適當物件或設定屬性的方式來實作。 如果您使用 DataRelation 物件建立外部索引鍵條件約束,則 ForeignKeyConstraint 類別的執行個體會加入至 DataRelationChildKeyConstraint 屬性中。

唯一條件約束的實作方式,則只需將資料行的 Unique 屬性設為 true,或將 UniqueConstraint 類別的執行個體加入 DataRelation 物件的 ParentKeyConstraint 即可。 如需暫止資料集中條件約束的詳細資訊,請參閱 HOW TO:填入 DataSet 時關閉條件約束

參考完整性規則

由於是外部索引鍵的一部分,您可指定在下列三個時間點所套用的參考完整性規則:

  • 於更新父資料錄時

  • 於刪除父資料錄時

  • 於接受或拒絕變更時

您可建立的規則是在 Rule 列舉型別中指定,如下表所示。

外部索引鍵條件約束規則

動作

Cascade

在父資料錄所進行的變更 (更新或刪除) 也會在子資料表中的關聯資料錄進行。

SetNull

不刪除子資料錄,但子資料錄中的外部索引鍵會設定為 DBNull。 這個設定會讓子資料錄像是被遺棄的「孤兒」一般,也就是說,它們與父資料錄並沒有關聯性。

注意事項注意事項
使用這個規則可能會導致子資料表出現無效資料。

SetDefault

相關子資料錄中的外部索引鍵會設定為預設值 (就如同資料行的 DefaultValue 屬性所建立的一樣)。

None

關聯子資料錄不會進行變更。 這個設定會讓子資料錄最後包含無效父資料錄的參考。

如需資料集資料表更新的詳細資訊,請參閱儲存資料集中的資料

僅條件約束的關聯

建立 DataRelation 物件時,您可以選擇是否要將關聯指定為僅用來強制執行條件約束,也就是說,不會使用它來存取關聯資料錄。 這個選項可以讓您產生稍微更有效率的資料集,而且其中包含的方法比具有關聯資料錄功能的資料集來得少。 不過,您將無法存取關聯資料錄。 例如,僅條件約束的關聯會阻止您刪除仍有子系的父資料錄,而且不可以透過父代存取子資料錄。

請參閱

參考

DataRelation

GetChildRows

GetParentRows

資料來源組態精靈

概念

使用 Visual Studio 中的資料集

DataSet 設計工具

其他資源

準備您的應用程式以接收資料

在您的應用程式中編輯資料