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