Поделиться через


Пространства имен (Entity SQL)

Entity SQL представляет пространства имен, чтобы избежать конфликтов имен для глобальных идентификаторов, таких как имена типов, наборы сущностей, функции и т. д. Поддержка пространства имен в Entity SQL аналогична поддержке пространства имен в .NET Framework.

Entity SQL предоставляет две формы предложения USING: квалифицированные пространства имен (где для пространства имен предоставляется более короткий псевдоним), а также неквалифицированные пространства имен, как показано в следующем примере:

USING System.Data;

USING tsql = System.Data;

Правила разрешения имен

Если идентификатор не может быть разрешен в локальных областях, Entity SQL пытается найти имя в глобальных областях (пространства имен). Entity SQL сначала пытается сопоставить идентификатор (префикс) с одним из квалифицированных пространств имен. Если имеется совпадение, Entity SQL пытается устранить остальную часть идентификатора в указанном пространстве имен. Если совпадение не найдено, создается исключение.

Затем Entity SQL пытается выполнить поиск всех неквалифицированных пространств имен (указанных в прологе) для идентификатора. Если идентификатор может находиться в одном пространстве имен, возвращается это расположение. Если несколько пространств имен совпадают с этим идентификатором, создается исключение. Если для идентификатора не удается определить пространство имен, Entity SQL передает имя в следующую внешнюю область ( DbCommand или DbConnection объект), как показано в следующем примере:

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

Различия от платформы .NET Framework

В .NET Framework можно использовать частично квалифицированные пространства имен. Entity SQL не допускает это.

использование ADO.NET

Запросы выражаются через объекты ADO.NET DbCommand . DbCommand объекты можно создавать на основе DbConnection объектов. Пространства имен также можно указать как часть DbCommand и DbConnection объекты. Если entity SQL не может разрешить идентификатор в самом запросе, внешние пространства имен пробуются (на основе аналогичных правил).

См. также