Udostępnij za pośrednictwem


Typizowane a nietypowe zestawy danych w programie .NET Framework

Uwaga / Notatka

Klasy DataSet i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian w bazie danych. Mimo że zestawy danych są sprawdzoną pomyślną technologią, zalecaną metodą dla nowych aplikacji platformy .NET jest użycie platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma bardziej prosty interfejs programowania.

Typowany zestaw danych to zestaw danych, który jest najpierw pochodzący z klasy bazowej DataSet , a następnie używa informacji z Projektanta zestawów danych, który jest przechowywany w pliku xsd w celu wygenerowania nowej, silnie typizowanej klasy zestawu danych. Informacje ze schematu (tabele, kolumny itd.) są generowane i kompilowane w tej nowej klasie zestawu danych jako zestaw obiektów i właściwości pierwszej klasy. Ponieważ typowany zestaw danych dziedziczy z klasy bazowej DataSet, typowana klasa przejmuje całą funkcjonalność klasy DataSet i może być używana z metodami, które przyjmują wystąpienie klasy DataSet jako parametr.

Natomiast nietypowy zestaw danych nie ma odpowiedniego wbudowanego schematu. Podobnie jak w typowanym zestawie danych, nietypowy zestaw danych zawiera tabele, kolumny i tak dalej — ale są one widoczne tylko jako kolekcje. (Jednak po ręcznym utworzeniu tabel i innych elementów danych w nietypowym zestawie danych można wyeksportować strukturę zestawu danych jako schemat przy użyciu metody zestawu danych WriteXmlSchema ).

Kontrastowy dostęp do danych w typowanych i nietypowych zestawach danych

Klasa dla typizowanego zestawu danych ma model obiektów, w którym jego właściwości przyjmują rzeczywiste nazwy tabel i kolumn. Jeśli na przykład pracujesz z typowanym zestawem danych, możesz odwołać się do kolumny przy użyciu kodu, takiego jak:

// This accesses the CustomerID column in the first row of the Customers table.
string customerIDValue = northwindDataSet.Customers[0].CustomerID;

Natomiast jeśli pracujesz z nietypowym zestawem danych, równoważny kod to:

string customerIDValue = (string)
    dataset1.Tables["Customers"].Rows[0]["CustomerID"];

Dostęp wpisany jest nie tylko łatwiejszy do odczytania, ale także w pełni obsługiwany przez funkcję IntelliSense w edytorze programu Visual Studio Code. Oprócz ułatwienia pracy z typizowanym zestawem danych, składnia zapewnia sprawdzanie typów podczas kompilacji, co znacznie zmniejsza prawdopodobieństwo błędów przy przypisywaniu wartości członkom zestawu danych. Jeśli zmienisz nazwę kolumny w DataSet klasie, a następnie skompilujesz aplikację, zostanie wyświetlony błąd kompilacji. Klikając dwukrotnie błąd kompilacji na liście zadań, możesz przejść bezpośrednio do wiersza lub wierszów kodu, w którym jest odniesienie do starej nazwy kolumny. Dostęp do tabel i kolumn w typowanym zestawie danych jest również nieco szybszy w czasie wykonywania, ponieważ dostęp jest określany w czasie kompilacji, a nie za pośrednictwem kolekcji w czasie wykonywania.

Mimo że typizowane zestawy danych mają wiele zalet, nietypowy zestaw danych jest przydatny w różnych okolicznościach. Najbardziej oczywistym scenariuszem jest to, że żaden schemat nie jest dostępny dla zestawu danych. Taka sytuacja może wystąpić, na przykład jeśli aplikacja wchodzi w interakcję ze składnikiem, który zwraca zestaw danych, ale nie wiesz wcześniej, jaka jest jego struktura. Podobnie czasami pracujesz z danymi, które nie mają statycznej, przewidywalnej struktury. W takim przypadku niepraktyczne jest użycie typizowanego zestawu danych, ponieważ konieczne byłoby ponowne wygenerowanie typizowanej klasy zestawu danych z każdą zmianą struktury danych.

Ogólnie rzecz biorąc, istnieje wiele razy, kiedy można dynamicznie utworzyć zestaw danych bez dostępnego schematu. W takim przypadku zestaw danych jest po prostu wygodną strukturą, w której można przechowywać informacje, o ile dane mogą być reprezentowane w sposób relacyjny. Jednocześnie możesz skorzystać z możliwości zestawu danych, takich jak możliwość serializacji informacji w celu przekazania ich do innego procesu lub zapisania pliku XML.