네임스페이스(Entity SQL)
Entity SQL에서는 형식 이름, 엔터티 집합, 함수 등의 전역 식별자에 대한 이름 충돌을 피하기 위해 네임스페이스가 도입되었습니다. Entity SQL의 네임스페이스 지원은 .NET Framework의 네임스페이스 지원과 유사합니다.
Entity SQL은 다음 예제와 같이 정규화된 네임스페이스(네임스페이스에 대해 짧은 별칭이 제공됨)와 비정규화된 네임스페이스라는 두 가지 형태의 USING 절을 제공합니다.
USING System.Data;
USING tsql = System.Data;
이름 확인 규칙
식별자를 로컬 범위에서 확인할 수 없는 경우 Entity SQL에서는 전역 범위(네임스페이스)에서 이름을 찾으려고 합니다. Entity SQL에서는 먼저 식별자(접두사)와 일치하는 정규화된 네임스페이스가 있는지 확인합니다. 일치하는 것이 있으면 Entity SQL에서는 해당 네임스페이스에서 나머지 식별자를 확인합니다. 일치하는 것이 없으면 예외가 throw됩니다.
다음으로 Entity SQL에서는 모든 비정규화된 네임스페이스(프롤로그에 지정됨)에서 식별자를 검색합니다. 식별자를 정확하게 하나의 네임스페이스에서 찾을 수 있으면 해당 위치가 반환됩니다. 해당 식별자와 일치하는 네임스페이스가 둘 이상이면 예외가 throw됩니다. 식별자의 네임스페이스를 확인할 수 없는 경우 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에서는 쿼리 자체 내에서 식별자를 확인할 수 없는 경우 외부 네임스페이스를 검색합니다(비슷한 규칙이 사용됨).