Przestrzenie nazw (Entity SQL)
Język Entity SQL wprowadza przestrzenie nazw, aby uniknąć konfliktów nazw dla identyfikatorów globalnych, takich jak nazwy typów, zestawy jednostek, funkcje itd. Obsługa przestrzeni nazw w języku Entity SQL jest podobna do obsługi przestrzeni nazw w programie .NET Framework.
Język Entity SQL udostępnia dwie formy klauzuli USING: kwalifikowane przestrzenie nazw (gdzie podano krótszy alias dla przestrzeni nazw) i niekwalifikowane przestrzenie nazw, jak pokazano w poniższym przykładzie:
USING System.Data;
USING tsql = System.Data;
Reguły rozpoznawania nazw
Jeśli nie można rozpoznać identyfikatora w zakresach lokalnych, program Entity SQL próbuje zlokalizować nazwę w zakresach globalnych (przestrzeniach nazw). Jednostka SQL najpierw próbuje dopasować identyfikator (prefiks) do jednej z kwalifikowanych przestrzeni nazw. Jeśli istnieje dopasowanie, program Entity SQL próbuje rozpoznać pozostałą część identyfikatora w określonej przestrzeni nazw. Jeśli nie zostanie znalezione dopasowanie, zostanie zgłoszony wyjątek.
Następnie usługa Entity SQL próbuje przeszukać wszystkie niekwalifikowane przestrzenie nazw (określone w prologu) dla identyfikatora. Jeśli identyfikator może znajdować się w dokładnie jednej przestrzeni nazw, zwracana jest ta lokalizacja. Jeśli więcej niż jedna przestrzeń nazw ma dopasowanie dla tego identyfikatora, zgłaszany jest wyjątek. Jeśli nie można zidentyfikować przestrzeni nazw dla identyfikatora, jednostka SQL przekazuje nazwę do następnego zakresu zewnętrznego ( DbCommand obiektu lub DbConnection ), jak pokazano w poniższym przykładzie:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Różnice w porównaniu z programem .NET Framework
W programie .NET Framework można używać częściowo kwalifikowanych przestrzeni nazw. Jednostka SQL nie zezwala na to.
użycie ADO.NET
Zapytania są wyrażane za pośrednictwem obiektów ADO.NET DbCommand . DbCommand obiekty mogą być kompilowane za pomocą DbConnection obiektów. Przestrzenie nazw można również określić jako część DbCommand obiektów i DbConnection . Jeśli program Entity SQL nie może rozpoznać identyfikatora w obrębie samego zapytania, zewnętrzne przestrzenie nazw są sondowane (na podstawie podobnych reguł).