LINQ al problema Dataset DBNULL / eccezione riferimento null
Domanda
Ho la seguente query LINQ che si traduce sempre in un errore quando la mia colonna "Osservazioni" in dtblDetail è nullo, anche se provo se è NULL.
var varActiveAndUsedElementsWithDetails =
from e in dtblElements
join d in dtblDetails on e.PK equals d.FK into set
from d in set.DefaultIfEmpty()
where (e.ElementActive == true)
select new
{
ElementPK = e.PK,
Remark = d.IsRemarkNull() ? null : d.Remark
};
Il messaggio di errore è stato: "Il valore per la colonna 'Osservazioni' in 'dtblDetails' tavolo è DBNull". Dopo aver aggiunto test d.IsRemarkNull () viene generata un'eccezione riferimento null.
Mi potete aiutare con questo?
Ho già controllato i seguenti siti web, ma non ho trovato niente di utile diverso da quello che ho da testare per DBNULL. Ma, come ha detto questo non risolve il problema.
Soluzione
Il problema era che l'intero punto 'd' era vuota. Così chiama 'd.IsRemarkNull ()' ha provocato l'eccezione riferimento null. Il seguente codice ha risolto il problema:
var varActiveAndUsedElementsWithDetails =
from e in dtblElements
join d in dtblDetails on e.PK equals d.FK into set
from d in set.DefaultIfEmpty()
where (e.ElementActive == true)
select new
{
ElementPK = e.PK,
Remark = d == null? null : (d.IsRemarkNull() ? null : d.Remark)
};
Altri suggerimenti
Dove sta l'errore proviene? E 'possibile che sia l'd.IsRemarkNull (), che sta causando? Che cosa significa che il metodo simile?
Forse:
DBNull.Value.Equals(d.Remark)
forse questo campo non permette nulla in dB, ottenere un valore di default per esso, e di evitare la gestione dei valori nulli