總結(jié)ADO.NET集合相關(guān)介紹
如果數(shù)據(jù)提供者是一個數(shù)據(jù)庫管理系統(tǒng)(DBMS),屬性的內(nèi)容很可能就是SQL命令字符串。當(dāng)Update方法執(zhí)行時,如果這些屬性還沒有設(shè)置好,但DataSet對象包含了主鍵信息,那么,ADO.NET集合將自動生成命令文本。
DataRow:要填充一個表,我們可以使用命令的自動數(shù)據(jù)綁定功能,或者也可以手工添加行,方法是:創(chuàng)建DataRow對象,把DataRow對象插入到表,然后為該記錄的各個字段填寫數(shù)據(jù)。我們可以通過Rows集合導(dǎo)航DataTable的元素,利用Rows集合實(shí)現(xiàn)一個順序?qū)Ш狡?,或者,通過搜索或直接定位跳轉(zhuǎn)到特定的記錄。
DataRelation:這個對象代表著兩個表之間的父-子關(guān)系。關(guān)系建立在具有同樣數(shù)據(jù)類型的列上,但列不必有相同的精確度。關(guān)系可以是ADO.NET集合、一對多(1:M)或多-對-多(M:N)關(guān)系。關(guān)系可以方便地把對父記錄的改動傳播到子記錄,但這不是默認(rèn)行為。
要啟用DataRelation對象,ADO.NET集合我們必須把一個ForeignKeyConstraint加入到待修改數(shù)據(jù)表的ConstraintsCollection成員。DataTable對象的ConstraintsCollection成員決定了當(dāng)一個父表的值被刪除或改動時,要執(zhí)行一些什么動作。 #t#
設(shè)置了關(guān)系之后,ADO.NET將拒絕所有破壞該關(guān)系的數(shù)據(jù)集改動操作,并產(chǎn)生一個運(yùn)行時異常。在遍歷表的記錄時,調(diào)用GetChildRows方法可以從已連接的表訪問所有相關(guān)的行。GetChildRows方法返回一個DataRow對象的數(shù)組,ADO.NET集合這是一種新的分層式記錄導(dǎo)航方式,而傳統(tǒng)的記錄導(dǎo)航方式屬于順序模式或隨機(jī)模式。
關(guān)系是不可傳遞的。假設(shè)表A關(guān)聯(lián)到表B,表B又關(guān)聯(lián)到表C的一些行。另外,假設(shè)在遍歷表A記錄的時候,對于每一個表A的記錄,我們要訪問現(xiàn)有關(guān)系中的子記錄。如果我們想要訪問對應(yīng)表B中特定記錄的表C記錄,那么,我們不能使用由A-B的關(guān)系得到的表B的DataRow對象;
相反,我們必須從表B打開一個新的表視圖,找到我們想要的特定記錄,ADO.NET集合然后通過表B對表C的關(guān)系調(diào)用GetChildRows方法。