2010-07-14 15 views
8

Bien, probablemente un realmente pregunta estúpida, pero ¿por qué la consulta generada por Entity Framework incluye "SELECT 1 AS C1" al principio? ¿Para qué es esto? Por ejemplo, Tengo el siguiente ser generada:Entity Framework SELECT 1 AS C1

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

Si hubiera escrito esto algo manualmente lo habría hecho así:

SELECT 
MY_ID 
FROM MYTABLE 
WHERE 'test1' = MY_ID 

Gracias

Respuesta

3

No todas las tablas tienen una PK, Desafortunadamente. No todas las proyecciones incluyen un PK. El 1 as C1 le permite al EF distinguir entre tablas vacías y seleccionar solo campos con nulos. Tenga en cuenta que esto puede estar en una consulta subconsulta o derivada, por lo que mirar el número de filas devueltas no responde necesariamente a eso.

+3

¿Podría aclarar cómo 1 como C1 ayuda a distinguir entre tablas vacías y seleccionar solo campos con nulos? Ejemplo si es posible, creo que sé lo que significa cada cosa, pero no estoy seguro de cómo se relacionan en este contexto. – jahav

+2

Esto ni siquiera responde las preguntas jajaja – Phil

Cuestiones relacionadas