Semántica de las comparaciones (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 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Ref1 |
Tipo complejo |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Fila |
Todas las propiedades4 |
Todas las propiedades4 |
Todas las propiedades4 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Todas las propiedades4 |
Se lanza una excepción3 |
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 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
Ref |
Sí5 |
Sí5 |
Sí5 |
Sí5 |
Se lanza una excepción |
Se lanza una excepción |
Sí5 |
Tipo de tipo |
Se lanza una excepción3 |
Se lanza una excepción |
Se lanza una excepción |
Se lanza una excepción |
Se lanza una excepción3 |
Se lanza una excepción3 |
Se lanza una excepción3 |
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).