Пространства имен (язык 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

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

См. также

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

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