Spazi dei nomi (Entity SQL)
In Entity SQL vengono introdotti gli spazi dei nomi per evitare conflitti di nome per gli identificatori globali, ad esempio nomi di tipi, set di entità, funzioni e così via. Il supporto dello spazio dei nomi in Entity SQL è analogo a quello in .NET Framework.
Entity SQL fornisce due tipi di clausola USING: spazi dei nomi qualificati (dove viene fornito un alias più breve per lo spazio dei nomi) e spazi dei nomi non qualificati, come illustrato nell'esempio seguente:
USING System.Data;
USING tsql = System.Data;
Regole per la risoluzione dei nomi
Se non è possibile risolvere un identificatore negli ambiti locali, Entity SQL tenta di individuare il nome negli ambiti globali (gli spazi dei nomi). Entity SQL tenta innanzitutto di confrontare l'identificatore (prefisso) con uno degli spazi dei nomi qualificati. Se è presente una corrispondenza, tramite Entity SQL viene eseguito un tentativo di risolvere il resto dell'identificatore nello spazio dei nomi specificato. Se non viene trovata alcuna corrispondenza, viene generata un'eccezione .
Tramite Entity SQL viene quindi eseguito un tentativo di cercare l'identificatore in tutti gli spazi dei nomi non qualificati (specificati nel prologo). Se l'identificatore può essere individuato esattamente in uno spazio dei nomi, viene restituito tale percorso. Se la corrispondenza per l'identificatore è presente in più di uno spazio dei nomi, viene generata un'eccezione. Se non è possibile identificare alcuno spazio dei nomi per l'identificatore, Entity SQL passa il nome all'ambito esterno successivo (oggetto DbCommand o DbConnection), come illustrato nell'esempio seguente:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Differenze rispetto a .NET Framework
In .NET Framework non è possibile utilizzare spazi dei nomi parzialmente qualificati. Ciò non è consentito in Entity SQL .
Utilizzo di ADO.NET
Le query sono espresse attraverso oggetti DbCommand ADO.NET. Gli oggetti DbCommand possono essere creati in base a oggetti DbConnection. Anche gli spazi dei nomi possono essere specificati come parte degli oggetti DbCommand e DbConnection. Se Entity SQL non è in grado di risolvere un identificatore all'interno della query stessa, viene eseguito un tentativo negli spazi dei nomi esterni (in base a regole simili).