Re: mojoPortal data layer
Well DataReaders are very fast, this is one reason mojoPortal is fast.
I don't see a problem since we only reference System.Data in the business layer and the web, we never references a specific data layer like System.Data.SqlClient.
IDataReader is no more specific than DataTable, both are in System.Data. Yes you have to remember to close the reader but this is a worthwhile tradeoff for perfomance in my opinion.
I can see why from an OOP purist view you might rather have collections of objects but populating a collection of business objects is a lot of extra overhead when you are only going to databind it. I prefer to databind to the lightest weight fastest source.
Cheers,
Joe