linq to sql prüft auf null

7

mein Datenbankfeld int_ParentId besteht aus einem Null-Wert. Wie würde ich es für eine Null in dieser Linq-Abfrage überprüfen. es funktioniert nicht

%Vor%     
maztt 07.03.2011, 19:36
quelle

4 Antworten

25

Haben Sie Ihr int_ParentId -Datenbankfeld auf int? type (z. B. <Column Name="int_ParentId" Type="System.Int32" DbType="Int" CanBeNull="true" /> ) abgebildet? Wenn ja, beide:

%Vor%

und

%Vor%

sollte funktionieren.

    
Alex 07.03.2011, 19:44
quelle
5

Diese Frage ist angesichts des fehlenden Kontexts, den Sie angeben, nicht einfach zu beantworten, obwohl _db.Categories.Where(m => m.int_ParentId.Equals(null)); in der Regel das tut, was Sie wollen.

Es gibt ein paar Diskrepanzen zwischen dem CTS (.NET-Typ-System) und dem SQL-Typ-System.

Siehe SQL-CLR-Fehlpaarungen - MSDN und Null Semantics - MSDN für die vollständige Referenz.

Vor allem Null wird Ihnen Kopfzerbrechen bereiten, wenn Sie nicht genügend aufpassen, da es in den jeweiligen Typsystemen zwei völlig verschiedene Bedeutungen hat. NULL in SQL bedeutet, "Wert fehlt, wird mit jedem Vergleich übereinstimmen", während null in .NET bedeutet "kein Objekt, Vergleich gegen Null wird immer falsch ergeben".

    
Johannes Rudolph 07.03.2011 19:46
quelle
1

Ich denke, dass Sie die Methode Equals des Objekts verwenden möchten:

%Vor%     
Kelsey 07.03.2011 19:42
quelle
0

Ich habe diese Abfrage in diesem Szenario arbeiten

%Vor%

Ich hoffe, es hilft.

    
Escarcha 09.05.2012 19:42
quelle

Tags und Links