數(shù)據(jù)集可以類型化或非類型化。類型化數(shù)據(jù)集是這樣一種數(shù)據(jù)集,它先從基類派生,然后使用XML架構(gòu)文件(.xsd文件)中的信息生成新類。架構(gòu)中的信息(表、列等)被作為一組第一類對(duì)象和屬性生成并編譯為此新數(shù)據(jù)集類。
因?yàn)轭愋突疍ataSet類從基類DataSet繼承,所以此類型化類承接DataSet類的所有功能,并且可與將DataSet類的實(shí)例作為參數(shù)的方法一起使用。
相形之下,非類型化數(shù)據(jù)集沒(méi)有相應(yīng)的內(nèi)置架構(gòu)。與類型化數(shù)據(jù)集一樣,非類型化數(shù)據(jù)集也包含表、列等,但它們只作為集合公開(kāi)。類型化數(shù)據(jù)集先是從基類DataSet派生,然后使用“數(shù)據(jù)集設(shè)計(jì)器”中的信息(存儲(chǔ)在 .xsd 文件中)生成一個(gè)新的強(qiáng)類型數(shù)據(jù)集類。架構(gòu)中的信息(表、列等)被作為一組第一類對(duì)象和屬性生成并編譯為此新數(shù)據(jù)集類。由于類型化數(shù)據(jù)集繼承自基DataSet類,因此類型化類具有DataSet類的所有功能,可以與采用DataSet類的實(shí)例作為參數(shù)的方法一起使用。
相形之下,非類型化數(shù)據(jù)集沒(méi)有相應(yīng)的內(nèi)置架構(gòu)。與類型化數(shù)據(jù)集一樣,非類型化數(shù)據(jù)集也包含表、列等,但它們只作為集合公開(kāi)。(不過(guò),在手動(dòng)創(chuàng)建了非類型化數(shù)據(jù)集中的表和其他數(shù)據(jù)元素后,可以使用數(shù)據(jù)集的WriteXmlSchema方法將數(shù)據(jù)集的結(jié)構(gòu)導(dǎo)出為一個(gè)架構(gòu)。)
盡管類型化數(shù)據(jù)集有許多優(yōu)點(diǎn),但在許多情況下需要使用非類型化數(shù)據(jù)集。最顯而易見(jiàn)的情形是數(shù)據(jù)集無(wú)架構(gòu)可用。例如,當(dāng)應(yīng)用程序正在與返回?cái)?shù)據(jù)集的組件交互而您事先不知道其結(jié)構(gòu)是哪種時(shí),便會(huì)出現(xiàn)這種情況。同樣,有些時(shí)候使用的數(shù)據(jù)不具有靜態(tài)的可預(yù)知結(jié)構(gòu),這種情況下使用類型化數(shù)據(jù)集是不切實(shí)際的做法,因?yàn)閷?duì)于數(shù)據(jù)結(jié)構(gòu)中的每個(gè)更改,您都必須重新生成類型化數(shù)據(jù)集類。
更常見(jiàn)的是,許多時(shí)候可能需要?jiǎng)討B(tài)創(chuàng)建無(wú)可用架構(gòu)的數(shù)據(jù)集。這種情況下,數(shù)據(jù)集只是一種方便的、可用來(lái)保留信息的結(jié)構(gòu)(只要數(shù)據(jù)可以用關(guān)系方法表示)。同時(shí),您還可以利用數(shù)據(jù)集的功能,如序列化傳遞到另一進(jìn)程的信息或?qū)懗?XML 文件的能力。