Skip to main content

Posts

Showing posts from July, 2009

Adapting DataRow to IDataRecord

You can find code for adapting a DataRow to the IDataRecord interface all over the place. One scenario in which this might be useful is [when the dregs of coding society are forced to perform] mapping the results of a database call to a custom object with the results sometimes coming back as a DataSet and sometimes as a DataReader. IDataRecord has a lot of members that you probably wouldn’t use, simply because they are for retrieving strongly-typed values from the record based on numeric index. You’re probably doing these conversions manually and getting the values by named index. If that’s the case, why not constrain the consumption of these types with the following interface: public interface IIndexedDataRecord { object this[string name] { get; } } and these adapters: public class DataReaderAdapter : IIndexedDataRecord { private readonly IDataReader reader; public DataReaderAdapter(IDataReader reader) { this.reader = reader; } public obj