Condividi tramite


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 è simile al supporto dello spazio dei nomi 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 esiste una corrispondenza, Entity SQL tenta di risolvere il resto dell'identificatore nello spazio dei nomi specificato. Se non viene trovata alcuna corrispondenza, viene generata un'eccezione .

Successivamente, Entity SQL prova a 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 (l'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 è possibile usare spazi dei nomi parzialmente qualificati. Entity SQL non consente questa operazione.

Uso 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, vengono sondati gli spazi dei nomi esterni (in base a regole simili).

Vedi anche