2010-07-14 7 views
8

OK, probabilmente un davvero domanda stupida, ma perché è la query viene generato da Entity Framework includono "SELECT 1 AS C1" all'inizio? A cosa serve? Ad esempio, ho il seguente viene generato:Entity Framework SELEZIONE 1 AS C1

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

Se avessi scritto questo qualcosa manualmente avrei fatto in questo modo:

SELECT 
MY_ID 
FROM MYTABLE 
WHERE 'test1' = MY_ID 

Grazie

risposta

3

Non tutte le tabelle hanno un PK, purtroppo. Non tutte le proiezioni includono un PK. Lo 1 as C1 consente all'EF di distinguere tra le tabelle vuote e selezionare solo i campi nullable. Tieni presente che può trattarsi di una query secondaria o derivata, pertanto non è necessario che risponda al numero di righe restituite.

+3

Potrebbe chiarire in che modo 1 come C1 aiuta a distinguere tra tabelle vuote e selezionando solo campi nullable? Esempio, se possibile, penso di sapere cosa significa ogni cosa, ma non sono sicuro di come siano correlati in questo contesto. – jahav

+2

Questo non risponde nemmeno alle domande lol – Phil