巧妙使用ADO.NET DataRelation對(duì)象
ADO.NET還是比較常用的,于是我研究了一下ADO.NET DataRelation,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。ADO.NET 數(shù)據(jù)服務(wù)框架支持具象狀態(tài)傳輸 (REST) 語(yǔ)義以外的功能。例如,服務(wù)操作和偵聽(tīng)器可用于將驗(yàn)證邏輯或安全過(guò)程添加到查詢(xún)和更新中。
可以使用 ADO.NET 數(shù)據(jù)服務(wù)定義的標(biāo)準(zhǔn)語(yǔ)法寫(xiě)入服務(wù)操作以對(duì)輸出進(jìn)行篩選或排序。以上示例的查詢(xún)字符串中使用了排序語(yǔ)法,其中的 $orderby 和 $top 運(yùn)算符應(yīng)用于操作結(jié)果。利用偵聽(tīng)器可以將自定義應(yīng)用程序邏輯插入到數(shù)據(jù)服務(wù)的請(qǐng)求或響應(yīng)過(guò)程中。必須為由數(shù)據(jù)服務(wù)公開(kāi)的給定實(shí)體集顯式注冊(cè)偵聽(tīng)器方法。在指定的實(shí)體集上執(zhí)行查詢(xún)、插入、更新或刪除操作時(shí),將調(diào)用相應(yīng)的偵聽(tīng)器。然后,偵聽(tīng)器可能會(huì)更改數(shù)據(jù)、執(zhí)行授權(quán)策略或者甚至終止操作。
#T#在包含多個(gè) DataTable 對(duì)象的 DataSet 中,可以使用 ADO.NET DataRelation 對(duì)象來(lái)使一個(gè)表與另一個(gè)表相關(guān),在多個(gè)表之間導(dǎo)航,以及從相關(guān)表中返回子行或父行。創(chuàng)建 ADO.NET DataRelation 所需的參數(shù)是所創(chuàng)建的 ADO.NET DataRelation 的名稱(chēng)以及對(duì)用作關(guān)系中父列和子列的那些列的一個(gè)或多個(gè) DataColumn 引用的數(shù)組。 當(dāng)創(chuàng)建 ADO.NET DataRelation 后,可以使用它在多個(gè)表之間導(dǎo)航和檢索值。
默認(rèn)情況下,向 DataSet 中添加 ADO.NET ADO.NET DataRelation 會(huì)將一個(gè) UniqueConstraint 添加到父表中并將一個(gè) ForeignKeyConstraint 添加到子表中。以下代碼示例使用 DataSet 中的兩個(gè) DataTable 對(duì)象來(lái)創(chuàng)建一個(gè) ADO.NET DataRelation 。 每個(gè) DataTable 包含一個(gè)名為 CustID 的列,它用作兩個(gè) DataTable 對(duì)象之間的鏈接。 該示例將單個(gè) ADO.NET DataRelation 添加到 DataSet 的 Relations 集合中。 該示例中的***個(gè)參數(shù)指定所創(chuàng)建的 ADO.NET DataRelation 的名稱(chēng)。 第二個(gè)參數(shù)設(shè)置父 DataColumn,第三個(gè)參數(shù)設(shè)置子 DataColumn。
Visual Basic
- customerOrders.Relations.Add("CustOrders", _
- customerOrders.Tables("Customers").Columns("CustID"), _
- customerOrders.Tables("Orders").Columns("CustID"))
C#
- customerOrders.Relations.Add("CustOrders",
- customerOrders.Tables["Customers"].Columns["CustID"],
- customerOrders.Tables["Orders"].Columns["CustID"]);
ADO.NET DataRelation 也具有 Nested 屬性,如果該屬性設(shè)置為 true,則來(lái)自子表的行會(huì)在使用 WriteXml 以 XML 元素形式編寫(xiě)時(shí)嵌套在來(lái)自父表的關(guān)聯(lián)行中。