Problème avec test valeur DBNull
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
Citation:
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:
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