DataReaders. .Net is very very OOP purist friendly. The dataset (unless it's typed) is a generic housing container for any kind of data. Naturally, that comes with overhead. With a DataReader, I can take the data, place it into my objects I created and be done with the reader. I'm not stuck maintaining a recordset anymore and quite frankly - that is one of the things I love about .Net the most.