J'essaie d'écrire une fonction générique qui vérifiera chaque paramètre de la base de données pour voir s'il est nul, et si c'est le cas, retournera DBNull ; sinon, retournera l'objet.
Voici donc ma fonction :
Public Shared Function CheckForNull(ByVal obj As Object) As Object
If obj <> Nothing Then Return obj Else Return DBNull.Value
End Function
Mon problème est que certains des objets que je passe à la fonction sont nullables. Je peux donc transmettre à la fonction un Long ? ou un Int ?, mais lorsqu'un type nullable est transmis à la fonction, il est converti en son type de valeur. Ainsi, si je passe un Long ? qui a une valeur de 0, la fonction renvoie DBNull parce que le Long ? est converti en Long et qu'une valeur de 0 pour un Long est équivalente à Rien. Est-il possible de faire en sorte que cette fonction fonctionne également pour les types Nullables ?
Sinon, je me contenterai d'utiliser les déclarations suivantes au lieu d'un appel de fonction générique :
IIf(nullableVar.HasValue, nullableVar, DBNull.Value))
et
IIf(nonNullableVar IsNot Nothing , nonNullableVar, DBNull.Value))