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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top