Koduję w .NET odkąd wyszedł z wersji beta. To dużo czasu i powinienem ponownie przeanalizować niektóre z moich założeń, aby zobaczyć, czy coś się zmieniło.
Jednym z moich największych założeń jest to, że czytnik danych jest szybszy niż zbiór danych — http://www.sitepoint.com/ dataset-datareader/
Czy nadal tak jest? Czy coś się zmieniło? Słyszałem plotki, że jest teraz coś mniej „gadatliwego” niż czytniki danych, ale nie mogę znaleźć żadnych artykułów, aby to zrobić. Pomysł polegał na tym, że kiedy „readnext” muszę wykonać podróż w obie strony bazy danych, podczas gdy alternatywa pobiera wszystko na raz w jednej podróży.
Czy istnieje teraz szybsza alternatywa dla czytnika danych, czy powyższy artykuł jest nadal poprawny?
Dla przypomnienia, kiedy mam czytnik danych, wszystko, co robię, to umieszczam wartości wierszy w obiekcie, umieszczam obiekt w tablicy mieszającej, czytam następny wiersz, powtarzam, a następnie zamykam połączenie. Dowolną logikę łączącą obiekty można wykonać za pomocą tablic haszujących po zamknięciu połączeń (zwolnienie puli tak szybko, jak to możliwe).
3 odpowiedzi
Podstawowa logika wypełniania DataSet
przez obiekt DbDataAdapter
nie uległa zmianie. Nadal używa DbDataReader
do wypełnienia DataSet. Tak więc, z definicji, użycie DataReadera do operacji, którą opisujesz, będzie nadal wydajniejsze.
DataReaders i DataSets mają różne zestawy funkcji. Nie ma znaczenia, jak szybki może być DataReader, jeśli nie ma funkcji, których potrzebujesz z DataSet. Porównujesz jabłka i pomarańcze.
Jeśli chcesz jabłka, użyj jabłka, jeśli chcesz pomarańczy, użyj tego. Użyj najlepszego narzędzia do pracy.
Tak, DataSets są nadal strasznie wolne, więc nigdy nie powinieneś ich używać w żadnym systemie, który ma więcej niż 1 użytkownika lub jest aplikacją internetową.
Podobne pytania
Nowe pytania
.net
NIE używaj w przypadku pytań dotyczących .NET Core - zamiast tego użyj [.net-core]. Platforma .NET to struktura oprogramowania zaprojektowana głównie dla systemu operacyjnego Microsoft Windows. Obejmuje implementację biblioteki klas podstawowych, środowiska uruchomieniowego języka wspólnego (powszechnie określanego jako CLR), systemu typu wspólnego (powszechnie określanego jako CTS) i środowiska wykonawczego języka dynamicznego. Obsługuje wiele języków programowania, w tym C #, VB.NET, F # i C ++ / CLI.