Co jest lepsze: DataSet czy DataReader?
Właśnie zobaczyłem ten wątek:
Datatable vs Dataset
https://coderoad.ru/2250/
ale to nie rozwiało moich wątpliwości… pozwól mi wyjaśnić lepiej, robiłem połączenie z bazą danych i musiałem pokazać wyniki w GridView. (Użyłem RecordSet, kiedy pracowałem z VB6 jakiś czas temu, a DataSet jest do niego bardzo podobny, więc korzystanie z DataSet było znacznie łatwiejsze.)
Wtedy jeden facet powiedział mi, że DataSet nie jest najlepszym sposobem, aby to zrobić.
Czy powinienem więc „nauczyć się” czytnika DataReader, czy dalej używać DataSet? Tabela danych?
Jakie są zalety/wady?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
6 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Zasobnik to ; pozwala na przenoszenie i pracę z rozproszonym zbiorem danych, ale poniesiesz koszty związane z przenoszeniem wiadra (dlatego najlepiej trzymać je w rozmiarze, który Ci odpowiada).
Czytnik danych to wąż: zapewnia jednokierunkowy/jednorazowy dostęp do danych, gdy przelatuje obok Ciebie; nie musisz nosić całej dostępnej wody na raz, ale musi być ona podłączona do kranu/bazy danych.
I tak jak możesz napełnić wiadro wężem, możesz wypełnić czytnikiem danych.
To znaczy robią różne rzeczy ...
Osobiście nie używam zbyt często , ale niektórzy je lubią. Jednak używam czytników danych do dostępu BLOB itp.
Anonimowy użytkownik
Potwierdzenie od:
Kilka dodatkowych funkcji: Zestawy danych można serializować i reprezentować w formacie XML, dzięki czemu można je łatwo przenosić do innych warstw. Nie można serializować DataReaders.
Z drugiej strony, jeśli masz dużą liczbę wierszy do odczytania z bazy danych, które przekazujesz do jakiegoś procesu dla reguły biznesowej, DataReader może mieć większy sens niż ładowanie DataSet ze wszystkimi wierszami, zajmując pamięć i prawdopodobnie wpływając na skalowalność.
Oto link, który jest trochę nieaktualny, ale nadal przydatny:
ADO.NET DataReader a DataSet a
http://msdn.microsoft.com/en-u ... .aspx
.
Anonimowy użytkownik
Potwierdzenie od:
Marka
https://stackoverflow.com/user ... vell: możesz używać DataSet bez bazy danych w ogóle.
Możesz wypełnić go z pliku XML lub po prostu z programu. Wypełnij go wierszami z jednej bazy danych, a następnie rozwiń i zapisz do innej bazy danych.
Zestaw danych to reprezentacja schematu relacyjnego w pełni zapisana w pamięci. To, czy kiedykolwiek użyjesz go z prawdziwą relacyjną bazą danych, zależy wyłącznie od Ciebie.
Anonimowy użytkownik
Potwierdzenie od:
Jak powiedziałeś, zbiór danych jest najbardziej podobny do zestawu VB6 Recordset. Oznacza to, że wyodrębnij potrzebne dane, przekaż je i zrób z nimi, co chcesz. Aha, i wreszcie pozbądź się go, kiedy skończysz.
Datareader jest bardziej ograniczony, ale zapewnia DUŻO lepszą wydajność, gdy wystarczy tylko raz odczytać dane. Na przykład, jeśli sam wypełnisz siatkę-t. e. wyciągnij dane, przejrzyj je, wypełnij siatkę dla każdego wiersza, a następnie odrzuć dane - datareader jest znacznie lepszy niż zbiór danych. Z drugiej strony nie próbuj nawet używać datareadera, jeśli masz zamiar zaktualizować dane ...
Więc tak, przestudiuj go, ale używaj go tylko wtedy, gdy jest to stosowne. Zestaw danych zapewnia znacznie większą elastyczność.
Anonimowy użytkownik
Potwierdzenie od:
Myślę, że w tej sytuacji lepiej jest używać DataSets - ponieważ wykonujesz wiązanie danych i to wszystko (myślę, że cykle procesora a wysiłek człowieka).
Jeśli chodzi o to, który z nich da najlepszą wydajność. To w dużej mierze zależy od twojej sytuacji. Na przykład, jeśli edytujesz dane, które łączysz, a partia się zmienia, lepiej byłoby, gdybyś miał DataSets
Anonimowy użytkownik
Potwierdzenie od:
DataReader a zestaw
dane
1) - DataReader jest zaprojektowany w architekturze zorientowanej na połączenie
- DataSet jest zaprojektowany w architekturze odłączonej
2) - DataReader daje bezpośredni dostęp tylko do danych
- DataSet zapewnia przewijalną nawigację do danych
3) - DataReader jest tylko do odczytu, nie możemy wprowadzać zmian w danych znajdujących się pod nim
- DataSet jest aktualizowalny, możemy wprowadzać zmiany w danych znajdujących się pod nim i przesyłać te zmiany z powrotem do źródła danych
4) - DataReader nie zapewnia opcji, takich jak wyszukiwanie i sortowanie danych
- DataSet zapewnia opcje, takie jak wyszukiwanie i sortowanie danych