Espaces de noms (Entity SQL)
Entity SQL introduit les espaces de noms afin d'éviter les conflits de noms des identificateurs globaux tels que les noms de types, les jeux d'entités, les fonctions, etc. La prise en charge des espaces de noms dans Entity SQL est identique à la prise en charge des espaces de noms dans le .NET Framework.
Entity SQL fournit deux formes de la clause USING : les espaces de noms qualifiés (où un alias plus court est fourni pour l'espace de noms) et les espaces de noms non qualifiés, tels qu'illustrés dans l'exemple suivant :
USING System.Data;
USING tsql = System.Data;
Règles de résolution de noms
Si un identificateur ne peut pas être résolu dans les portées locales, Entity SQL tente de localiser le nom dans les portées globales (les espaces de noms). Entity SQL tente tout d'abord de faire correspondre l'identificateur (préfixe) avec l'un des espaces de noms qualifiés. Si une correspondance est trouvée, Entity SQL tente de résoudre le reste de l'identificateur dans l'espace de noms spécifié. Si aucune correspondance n'est trouvée, une exception est levée.
Entity SQL tente ensuite de rechercher l'identificateur dans tous les espaces de noms non qualifiés (spécifiés dans le prologue). Si l'identificateur est localisé dans exactement un espace de noms, cet emplacement est retourné. Si plusieurs espaces de noms ont une correspondance pour cet identificateur, une exception est levée. Si aucun espace de noms ne peut être identifié pour l'identificateur, Entity SQL passe le nom à l'étendue externe suivante (l'objet DbCommand ou DbConnection), comme illustré dans l'exemple suivant :
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Différences par rapport au .NET Framework
Dans le .NET Framework, vous pouvez utiliser des espaces de noms partiellement qualifiés. Entity SQL ne permet pas cela.
Utilisation d'ADO.NET
Les requêtes sont exprimées par le biais d'objets DbCommand ADO.NET. Les objets DbCommand peuvent être créés à partir d'objets DbConnection. Il est également possible de spécifier des espaces de noms comme faisant partie des objets DbCommand et DbConnection. Si Entity SQL ne peut pas résoudre un identificateur dans la requête elle-même, les espaces de noms externes sont détectés (en se basant sur les mêmes règles).