У меня есть простой объект значений, который я заполняю данными из IDataReader (может быть результатом запроса к базе данных Oracle или MS SQL). Фабричный метод для этого объекта выглядит примерно так:
internal static SomeClass CreateFromDataReader(IDataReader data)
{
string message = data.GetString(0);
short id = data.GetInt16(1);
DateTime dateStamp = data.GetDateTime(2);
return new SomeClass(message, id, dateStamp);
}
Затем я столкнулся с проблемой, связанной с различием в типе данных, который базы данных Oracle и MS SQL используют для этого конкретного столбца: в Oracle этот тип данных является числом, а для MS SQL используется тип данных smallint.
Теперь, хотя я мог бы «исправить» эту проблему, сделав что-то вроде следующего:
short id = Convert.ToInt16(data.GetValue(1));
есть ли лучший или более элегантный способ сделать это?