Semántica de comparación (Entity SQL)
El uso de cualquiera de los operadores de Entity SQL siguientes implica la comparación de las instancias de tipo:
Comparación explícita
Operaciones de igualdad:
=
!=
Operaciones de ordenación:
<
<=
>
>=
Operaciones de nulabilidad:
IS NULL
IS NOT NULL
Distinción explícita
Distinción de igualdad:
DISTINCT
GROUP BY
Distinción de ordenación:
- ORDER BY
Distinción implícita
Operaciones y predicados de conjuntos (igualdad):
UNION
INTERSECT
EXCEPT
SET
OVERLAPS
Predicados de elementos (igualdad):
- IN
Combinaciones admitidas
En la tabla siguiente se muestran todas las combinaciones admitidas de los operadores de comparación para cada clase de tipo:
Tipo | = != |
GROUP BY DISTINCT |
UNION INTERSECT EXCEPT SET OVERLAPS |
IN | <<= >>= |
ORDER BY | IS NULL IS NOT NULL |
---|---|---|---|---|---|---|---|
Tipo de entidad | Ref1 | Todas las propiedades2 | Todas las propiedades2 | Todas las propiedades2 | Throw3 | Throw3 | Ref1 |
Tipo complejo | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 |
Row | Todas las propiedades4 | Todas las propiedades4 | Todas las propiedades4 | Throw3 | Throw3 | Todas las propiedades4 | Throw3 |
Tipo primitivo | Depende del proveedor | Depende del proveedor | Depende del proveedor | Depende del proveedor | Depende del proveedor | Depende del proveedor | Depende del proveedor |
Conjunto múltiple | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 | Throw3 |
Ref | Sí5 | Sí5 | Sí5 | Sí5 | Throw | Throw | Sí5 |
Asociación type |
Throw3 | Throw | Throw | Throw | Throw3 | Throw3 | Throw3 |
1Las referencias de las instancias del tipo de entidad dado se comparan implícitamente, según se muestra en el ejemplo siguiente:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != p2 OR p1 IS NULL
Una instancia de entidad no se puede comparar con una referencia explícita. Si se intenta, se inicia una excepción. Por ejemplo, la siguiente consulta iniciaría una excepción:
SELECT p1, p2
FROM AdventureWorksEntities.Product AS p1
JOIN AdventureWorksEntities.Product AS p2
WHERE p1 != REF(p2)
2Las propiedades de tipos complejos se simplifican antes de enviarse al almacén, de modo que lleguen a ser comparables (siempre que todas sus propiedades sean comparables). Vea también 4.
3El motor de tiempo de ejecución de Entity Framework detecta un caso no admitido e inicia una excepción significativa sin activar el proveedor o almacén.
4Se intentan comparar todas las propiedades. Si hay una propiedad que es de un tipo no comparable, como text, ntext o image, se podría iniciar una excepción de servidor.
5Se comparan todos los elementos individuales de las referencias (esto incluye el nombre del conjunto de entidades y todas las propiedades clave del tipo de entidad).