Search code examples
c#.netsqldatareaderdatarow

Extract from DataRow or DataReader with one function


I'm looking for a solution for how to be able to extract data from a database when using either a DataRow and a DataReader with only one function (or one base function).

My problem stems from the fact that sometimes I need a DataReader and sometimes I need a DataTable/DataRow but then in order to extract the data from those objects I need two seperate Data access methods because they do not share an interface.

Basically when my database structure changes, I don't want to have to go in and write the following data retrieval code in multiple functions:

someValue = dr["someValue"]

It's the same syntax and does the same thing so I want a function that shares that functionality regardless of whether I'm using a DataReader or DataTable/DataRow to extract the data from the database.


Solution

  • You can use CreateDataReader method in DataTable class to access data through DbDataReader base class. Hence you can change the implementation but keep the mapping.

    public List<MyType> GetMyTypeCollection(DbDataReader reader)
    {
    //mapping code here
    }
    

    It would be better if you can move to an ORM where you do not have to map manually.

    Take a look at this micro ORM Dapper