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