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


Пространства имен (язык 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 не удастся разрешить идентификатор в пределах самого запроса, будет выполнен поиск во внешних пространствах имен (на основании похожих правил).

См. также

Основные понятия

Справочник по Entity SQL
Общие сведения о языке Entity SQL