Espacios de nombres (Entity SQL)
Entity SQL introduce espacios de nombres para evitar conflictos de nombres en los identificadores globales como los nombres de tipos, los conjuntos de entidades, las funciones, etcétera. La compatibilidad con los espacios de nombres de Entity SQL es similar a la de .NET Framework.
Entity SQL proporciona dos formas de cláusula USING: espacios de nombres calificados, a los que se proporciona un alias más breve, y espacios no calificados, según se ilustra en el ejemplo siguiente:
USING System.Data;
USING tsql = System.Data;
Reglas de la resolución de nombres
Si un identificador no se puede resolver en los ámbitos locales, Entity SQL intenta localizar el nombre en los ámbitos globales (los espacios de nombres). Entity SQL primero intenta buscar la coincidencia del identificador (prefijo) con uno de los espacios de nombres no calificados. Si se encuentra una coincidencia, Entity SQL intenta resolver el resto del identificador en el espacio de nombres especificado. Si no se encuentra ninguna coincidencia, se inicia una excepción.
Después, Entity SQL intenta buscar el identificador en todos los espacios de nombres no calificados (especificados en el prólogo). Si el identificador se puede encontrar en un espacio de nombres exactamente, se devuelve esa ubicación. Si hay una coincidencia con ese identificador en más de un espacio de nombres, se inicia una excepción. Si no se puede identificar ningún espacio de nombres para el identificador, Entity SQL pasa el nombre al siguiente ámbito exterior (el objeto DbCommand o DbConnection), según se ilustra en el ejemplo siguiente:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Diferencias con .NET Framework
En .NET Framework, puede usar espacios de nombres parcialmente calificados. Entity SQL no permite esto.
Uso de ADO.NET
Las consultas se expresan a través de objetos de ADO.NET DbCommand. Los objetos DbCommand pueden se pueden generar sobre los objetos DbConnection. Los espacios de nombres también se pueden especificar como parte de los objetos DbCommand y DbConnection. Si Entity SQL no puede resolver un identificador dentro de la propia consulta, los espacios de nombres externos se sondean (en función de reglas similares).