SqlFieldReader.cs 926 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. using System.Data;
  3. using System.Collections.Generic;
  4. namespace Vit.Orm.Sql.DataReader
  5. {
  6. class SqlFieldReader
  7. {
  8. public int sqlFieldIndex { get; set; }
  9. protected Type valueType { get; set; }
  10. protected Type underlyingType;
  11. public SqlFieldReader(List<string> sqlFields, Type valueType, string sqlFieldName)
  12. {
  13. this.valueType = valueType;
  14. underlyingType = TypeUtil.GetUnderlyingType(valueType);
  15. sqlFieldIndex = sqlFields.IndexOf(sqlFieldName);
  16. if (sqlFieldIndex < 0)
  17. {
  18. sqlFieldIndex = sqlFields.Count;
  19. sqlFields.Add(sqlFieldName);
  20. }
  21. }
  22. public object Read(IDataReader reader)
  23. {
  24. var value = reader.GetValue(sqlFieldIndex);
  25. return TypeUtil.ConvertToUnderlyingType(value, underlyingType);
  26. }
  27. }
  28. }