GetTextReader throws exceptions InvalidOperationException, IndexOutOfRangeException, InvalidCastException please add try catch or some checks. 
http://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader.gettextreader(v=vs.110).aspx.
Are you sure that for DBNull the result should be new StringReader(string.Empty) or null ?