Partager via


Espaces de noms (Entity SQL)

Entity SQL introduit des espaces de noms pour éviter les conflits de noms pour les identificateurs globaux tels que les noms de types, les jeux d’entités, les fonctions, etc. La prise en charge de l’espace de noms dans Entity SQL est similaire à la prise en charge de l’espace 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, comme illustré 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 étendues locales, Entity SQL tente de localiser le nom dans les étendues globales (espaces de noms). Entity SQL tente d’abord de faire correspondre l’identificateur (préfixe) à l’un des espaces de noms qualifiés. S’il existe une correspondance, 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.

Ensuite, Entity SQL tente de rechercher tous les espaces de noms non qualifiés (spécifiés dans le prolog) pour l’identificateur. Si l’identificateur peut se trouver dans 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 transmet le nom à l’étendue extérieure suivante (ou DbCommandDbConnection objet), 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 .NET Framework, vous pouvez utiliser des espaces de noms partiellement qualifiés. Entity SQL n’autorise pas cela.

Utilisation de ADO.NET

Les requêtes sont exprimées par le biais d’objets DbCommand ADO.NET. DbCommand les objets peuvent être générés sur DbConnection des objets. Les espaces de noms peuvent également être spécifiés dans le cadre des objets et DbConnection des DbCommand objets. Si Entity SQL ne peut pas résoudre un identificateur dans la requête elle-même, les espaces de noms externes sont interrogés (en fonction de règles similaires).

Voir aussi