J'ai un objet de valeur simple que je remplis avec les données d'un IDataReader (peut être le résultat d'une requête sur une base de données Oracle ou MS SQL). La méthode de fabrication pour cet objet ressemble à quelque chose comme ce qui suit:Meilleures pratiques pour contourner les différences de base de données avec un IDataReader
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);
}
Je me suis alors tombé sur un problème qui est lié à la différence dans le type de données que les bases de données SQL Oracle et MS utiliser pour cette colonne particulière: dans Oracle ce type de données est un nombre tandis que pour MS SQL, le type de données utilisé est smallint.
Maintenant, alors que je pouvais « réparer » ce problème en faisant quelque chose comme ce qui suit:
short id = Convert.ToInt16(data.GetValue(1));
est-il un moyen meilleur ou plus élégante de le faire?