Freigeben über


Namespaces (Entity SQL)

Entity SQL vermeidet Namenskonflikte bei globalen Bezeichnern wie Typnamen, Entitätenmengen, Funktionen usw. mithilfe von Namespaces. Die Unterstützung von Namespaces in Entity SQL entspricht der Unterstützung von Namespaces in .NET Framework.

Entity SQL stellt, wie in folgendem Beispiel veranschaulicht, zwei Arten der USING-Klausel zur Verfügung: qualifizierte Namespaces (wobei ein kürzerer Alias für den Namespace bereitgestellt wird) und unqualifizierte Namespaces:

USING System.Data;

USING tsql = System.Data;

Regeln zur Namensauflösung

Wenn ein Bezeichner nicht in den lokalen Bereichen aufgelöst werden kann, sucht Entity SQL den Namen in den globalen Bereichen (den Namespaces). Entity SQL versucht zunächst, den Bezeichner (Präfix) einem der qualifizierten Namespaces zuzuordnen. Wenn eine Übereinstimmung festgestellt wird, versucht Entity SQL den Rest des Bezeichners im angegebenen Namespace aufzulösen. Wenn keine Übereinstimmung festgestellt werden kann, wird eine Ausnahme ausgelöst.

Anschließend sucht Entity SQL nach allen unqualifizierten Namespaces (die im Prolog angegeben sind) für den Bezeichner. Wird der Bezeichner in genau einem Namespace gefunden, wird dieser Bereich zurückgegeben. Wenn dem Bezeichner mehrere Namespaces entsprechen, wird eine Ausnahme ausgelöst. Wenn für den Bezeichner kein Namespace identifiziert werden kann, wird der Name von Entity SQL an den nächsten äußeren Gültigkeitsbereich (das DbCommand-Objekt oder das DbConnection-Objekt) übergeben, wie im folgenden Beispiel veranschaulicht:

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

Unterschiede zum .NET Framework

In .NET Framework können Sie im Gegensatz zu Entity SQL partiell qualifizierte Namespaces verwenden.

Verwendung von ADO.NET

Abfragen werden durch DbCommand-Objekte von ADO.NET ausgedrückt. DbCommand-Objekte können über DbConnection-Objekte erstellt werden. Namespaces können auch als Teil des DbCommand-Objekts und des DbConnection-Objekts angegeben werden. Wenn Entity SQL einen Bezeichner nicht in der Abfrage selbst auflösen kann, werden die externen Namespaces (nach ähnlichen Regeln) untersucht.

Siehe auch

Konzepte

Entity SQL-Referenz
Übersicht über Entity SQL