Bonjour,

J'ai un petit souci avec des données stockées sous sqlServer lors de l'affectation aux membres d'une class.

Sous sql server j'ai une table contenant des champs qui peuvent être NULL

Coté C#, dans mon code, j'utilise un Dataset qui exécute une procédure stockée récupérant les données de la table pour initialiser ma class. Sur les champs Nullables en base, j'ai bien précisé à True la propriété AllowDBNull.


Or, à l'exécution du bout de code ci-dessous ça plante, il me dit
throw new global::System.Data.StrongTypingException("La valeur pour la colonne \'compteAttente\' dans la table \'Facture\' est DBNull.", e);
Idem pour le champs montantTTC (type double)

(Le code en rouge ne fonctionne pas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
            public List<FactureDao> GetFactureList()
            {
                _factureDal = new FactureDAL();
                List<FactureDao> mesFactures = new List<FactureDao>();
                foreach (var myRow in _factureDal.GetFactureList())
                {
                    
                    FactureDao maFactureDao = new FactureDao();
                    maFactureDao._id = myRow.idfacture;
                    maFactureDao._numeroFacture = myRow.numfacture;
                    if (myRow.montantTTC == DBNull.Value) //cannot apply operator '==' to operands of type double float etc ..
                        maFactureDao._montantFacture = 0;
                    else
                        maFactureDao._montantFacture = (float)myRow.montantTTC;

                    maFactureDao._dateFacture = myRow.dateFacture;
                    maFactureDao._dateSaisie = myRow.dateSaisie;

                    //if (DBNull.Value.Equals(myRow.compteAttente.ToString()))
                    //if (string.IsNullOrEmpty(myRow.compteAttente))
                    //if (System.DBNull.Value == myRow.compteAttente)
                    if (myRow.compteAttente is DBNull)
                        maFactureDao.CompteAttente = null;
                    else
                        maFactureDao._compteAttente = myRow.compteAttente;
                    


                    maFactureDao._information = myRow.info;
                    maFactureDao._statut = myRow.statut;
                    mesFactures.Add((maFactureDao));
                }

                return mesFactures;
            }
Je n'arrive pas à trouver le bon format pour tester si la valeur renvoyée est DBNULL.

Quelqu'un aurait une idée ?

Merci d'avance