Share via


Namespaces (Entity SQL)

O Entity SQL introduz namespaces para evitar conflitos de nome para identificadores globais como nomes de tipo, conjuntos de entidades, funções e assim por diante. O suporte para namespace no Entity SQL é semelhante ao suporte para namespace no .NET Framework.

O Entity SQL fornece duas formas da cláusula USING: namespaces qualificados (em que um alias mais curto é fornecido para o namespace) e namespaces não qualificados, como ilustrado no seguinte exemplo:

USING System.Data;

USING tsql = System.Data;

Regras de resolução de nomes

Se um identificador não puder ser resolvido nos escopos locais, o Entity SQL tentará localizar o nome em escopos globais (namespaces). O Entity SQL tenta fazer a correspondência entre o identificador (prefixo) e um dos namespaces qualificados. Se houver uma correspondência, o Entity SQL tentará resolver o restante do identificador no namespace especificado. Se nenhuma correspondência for encontrada, uma exceção é lançada.

Em seguida, o Entity SQL tentará pesquisar todos os namespaces não qualificados (especificados no prólogo) para o identificador. Se o identificador pode ser localizado em exatamente um namespace, esse local é retornado. Se mais de um namespace tiver uma correspondência para o identificador, uma exceção é lançada. Se nenhum namespace puder ser identificado para o identificador, o Entity SQL passará o nome para o próximo escopo externo (o objeto DbCommand ou DbConnection), conforme ilustrado no seguinte exemplo:

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

Diferenças do .NET Framework

No .NET Framework, você pode usar namespaces parcialmente qualificados. O Entity SQL não permite isso.

Uso do ADO.NET

Consultas são expressos por meio de objetos ADO.NET DbCommand . os objetos deDbCommand podem ser compilados sobre objetos de DbConnection . Namespaces também podem ser especificadas como parte de objetos de DbCommand e de DbConnection . Se o Entity SQL não puder resolver um identificador dentro da consulta em si, namespaces externos serão investigados (com base em regras similares).

Confira também