我有一个简单的值对象,我用来自 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));
有没有更好或更优雅的方法来做到这一点?