Bonjour

Ma question est un peu academique mais peut peut-être ouvrir des piste intéressantes ?

Voila : La difficulté de base c'est de dialoguer avec une DB MS Sql qui attends des valeurs Nulle !
A priori Csharp accepte les types nullables et donc il y a moyen de contourner la moité du probleme

Par contre l'ajout de parametre dans une requete parametrée n'accepte pas directement les Types nullables

Nous voila donc forcé a contourner un deuxieme probleme en employant par exemple un opérateur ternaire pour passer un DBNull.Value et caster la variable en objet

Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyCmd.Parameters.AddWithValue("@Machin",(this.Machin == null) ? DBNull.Value : (object)this.Machin;
Ca ne facilite pas la lecture ni l'ecriture

Et je passe donc par une petite methode outil

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    MyCmd.Parameters.AddWithValue("@Machin", Tools.ObjectOrNull(this.Machin));
 
 
    // *********************************************************************************
    internal static object ObjectOrNull(decimal? val)
    {
      return (val == null) ? DBNull.Value : (object)val;
    }
Je ne pense pa que cela va manger beaucoup de ressources suplémentaires mais je me demandais si on pouvait en Csharp mettre ce genre de code en inline ou en Macro comme en C ?

Ou si quelqu'un a déja rencontré ce problème, comment l'as-t-il contourné ?

Merci de votre aide