2010-07-14 10 views
8

OK, wahrscheinlich eine wirklich dumme Frage, aber warum ist die Abfrage von Entity Framework "SELECT 1 AS C1" am Anfang? Wofür ist das? Zum Beispiel habe ich folgendes Wesen erzeugt:Entity Framework SELECT 1 AS C1

SELECT 
1 AS C1, 
"Extent1".MY_ID AS MY_ID 
FROM MYTABLE "Extent1" 
WHERE 'test1' = "Extent1".MY_ID 

Wenn ich diese manuell geschrieben hätte, hätte ich so etwas getan haben:

SELECT 
MY_ID 
FROM MYTABLE 
WHERE 'test1' = MY_ID 

Dank

Antwort

3

Nicht alle Tabellen haben eine PK, Unglücklicherweise. Nicht alle Projektionen enthalten eine PK. Die 1 as C1 ermöglicht der EF, zwischen leeren Tabellen zu unterscheiden und nur Nullable-Felder auszuwählen. Bedenken Sie, dass dies in einer Unterabfrage oder einer abgeleiteten Abfrage vorkommen kann. Daher muss die Anzahl der zurückgegebenen Zeilen nicht unbedingt auf diese Zahl antworten.

+3

Könnten Sie bitte klarstellen, wie 1 als C1 hilft, zwischen leeren Tabellen zu unterscheiden und nur nullbare Felder auszuwählen? Beispiel wenn möglich, ich denke ich weiß, was jede Sache bedeutet, aber ich bin nicht sicher, wie sie in diesem Zusammenhang verwandt sind. – jahav

+2

Dies beantwortet nicht einmal die Fragen lol – Phil

Verwandte Themen