다음을 통해 공유


Namespace 특성(CSDL)

CSDL(개념 스키마 정의 언어)로 선언된 네임스페이스 이름은 EDM(엔터티 데이터 모델)에서 몇 가지 기능을 가집니다. 빌드 프로세스에서 응용 프로그램용 데이터를 보관하는 저장소 구조에 프로그래밍 가능한 클래스를 연결하려면, CSDL 스키마의 형식과 컨테이너가 저장소 메타데이터에 매핑되어야 합니다. MSL(매핑 사양 언어)은 저장소 모델을 설명하는 SSDL(저장소 스키마 정의 언어) 정의에 개념 형식을 연결합니다.

CSDL 파일을 기반으로 개체 모델이 빌드된 후, 응용 프로그램 코드에서는 CSDL 파일에 지정된 네임스페이스를 사용하여 빌드 프로세스 중 만들어진 DLL의 클래스를 참조합니다. 다음 using 지시문은 AdventureWorksHRModel 네임스페이스에서 해당 클래스를 식별합니다.

using AdventureWorksHRModel;

CSDL 스키마에 선언된 네임스페이스 역시 EDM 응용 프로그램에서 필요한 exe.config 파일에서 이 개체 모델을 식별합니다. 이 예제에서 연결 문자열에 HumanResources 클래스 이름이 포함됩니다. 이 클래스 이름은 엔터티 컨테이너의 이름을 기반으로 합니다.

엔터티 컨테이너에 대한 자세한 내용은 엔터티 컨테이너(EDM)를 참조하십시오.

<connectionStrings>
    <add name="HumanResources" connectionString='metadata=.;
    provider=System.Data.SqlClient; provider connection 
                                          string="server=servername;
    database=AdventureWorks; integrated security=true;
    multipleactiveresultsets=true"' providerName="System.Data.Mapping"/>
</connectionStrings>

exe.config 파일에 이전 연결 문자열이 있다면, 다음 문만 있으면 응용 프로그램 코드에서 사용할 HumanResources EntityConnection을 인스턴스화할 수 있습니다.

HumanResources hrDb = new HumanResources();

네임스페이스와 매핑

CSDL 스키마 Schema 요소는 개체 모델 식별에 쓰이는 네임스페이스 이름을 포함합니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
        Alias="Self"
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm">

SSDL 파일에도 유사한 줄이 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

이 선언에 사용된 네임스페이스 이름은 생성 중인 데이터 모델에서의 용도를 반영합니다. AdventureWorksHRModel은 대상 메타데이터 네임스페이스 AdventureWorksHRTarget에 매핑되는 개념적 모델입니다.

개념 스키마 및 저장소 스키마의 EntityContainer 요소는 Schema 요소에 포함되어 있지만 Schema 요소에 독립적입니다. 매핑 사양에서 EntityContainerMapping 요소는 컨테이너 개체를 참조하여 두 네임스페이스를 매핑하며 이때 다음과 같은 네임스페이스 이름을 참조하지 않고 수행합니다. edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

다음 MSL 머리글은 개념 스키마의 HumanResources 엔터티 컨테이너(여기서는 CdmEntityContainer)와 저장소 메타데이터(StorageEntityContainer) 간의 매핑을 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<Mapping edm:Space="C-S" 
    xmlns:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS" 
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

별칭

CSDL Namespace 특성은 스키마의 나머지 부분에서 네임스페이스 이름을 짧게 줄이는 데 사용할 수 있는 Alias 연관 특성이 있습니다. 다음 예제에서는 문자열 SelfAlias 특성에 할당합니다.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm">

Alias는 스키마의 나머지 부분에서 매우 유용하며, 다음 구문에서 보여 주는 것처럼 가독성을 높입니다.

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />

Xmlns

위의 예제에는 할당된 URL이 있는 xmlns 특성도 포함되어 있습니다. 모든 CSDL 스키마는 동일한 이 URI를 사용합니다.

참고 항목

개념

저장소 메타데이터 스키마(SSDL)
매핑 사양(MSL)
AdventureWorks 전체 모델(EDM)