LINQ to Dataset DBNULL Problem / null-Verweisausnahme
Frage
Ich habe die folgende LINQ-Abfrage, die zu einem Fehler führt immer, wenn meine „Bemerkung“ -Spalte in dtblDetail null ist, auch wenn ich testen, ob es NULL ist.
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
};
Die Fehlermeldung lautet: „Der Wert für die Spalte‚Bemerkung‘in Tabelle‚dtblDetails‘ist DBNull.“ Nach der Zugabe wird der Test für d.IsRemarkNull () NULL-Verweis Ausnahme ausgelöst.
Können Sie mir dabei helfen?
Ich habe bereits überprüft die folgenden Websites, aber alles andere als nützlich, dass ich testen, nicht für DBNULL finden. Aber die so bedeutet dies nicht mein Problem lösen.
Lösung
Das Problem war, dass der ganze ‚d‘ Artikel leer war. So ergab die Nullreferenz Ausnahme ‚d.IsRemarkNull ()‘ aufrufen. Der folgende Code das Problem behoben:
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)
};
Andere Tipps
Wo kommt der Fehler aus? Ist es möglich, dass es die d.IsRemarkNull () ist, die es verursacht? Was bedeutet das Verfahren aussehen?
Vielleicht:
DBNull.Value.Equals(d.Remark)
Vielleicht ist dieses Feld nicht null in db ermöglichen, einen Standardwert für sie bekommen, und vermeiden Nullwert Handhabung