Schema 요소(CSDL)
Schema 요소는 개념적 모델 정의의 루트 요소입니다. 이 요소에는 개념적 모델을 구성하는 개체, 함수 및 컨테이너에 대한 정의가 포함되어 있습니다.
Schema 요소에는 다음 자식 요소가 0개 이상 포함될 수 있습니다.
Schema 요소에는 Annotation 요소가 0개 또는 한 개 포함될 수 있습니다.
참고: |
---|
Function 요소 및 Annotation 요소는 .NET Framework 버전 4 이상을 대상으로 하는 응용 프로그램에 대한 개념적 모델에서만 허용됩니다.이러한 모델에 대한 XML 네임스페이스는 https://schemas.microsoft.com/ado/2008/09/edm입니다. |
Schema 요소는 Namespace 특성을 사용하여 개념적 모델에서 엔터티 형식, 복합 형식 및 연결 개체에 대한 네임스페이스를 정의합니다. 네임스페이스 내에서 두 개체의 이름이 서로 같을 수 없습니다. 네임스페이스는 여러 Schema 요소 및 여러 .csdl 파일에 걸쳐 있을 수 있습니다.
개념적 모델 네임스페이스는 Schema 요소의 XML 네임스페이스와 다릅니다. Namespace 특성에 의해 정의되는 개념적 모델 네임스페이스는 엔터티 형식, 복합 형식 및 연결 형식에 대한 논리적 컨테이너입니다. xmlns 특성이 나타내는 Schema 요소의 XML 네임스페이스는 Schema 요소의 자식 요소 및 특성에 대한 기본 네임스페이스입니다. https://schemas.microsoft.com/ado/YYYY/MM/edm 형식(여기서 YYYY은 연도, MM은 월을 나타냄)의 XML 네임스페이스가 CSDL용으로 예약됩니다. 사용자 지정 요소 및 특성은 이러한 형식의 네임스페이스에 있을 수 없습니다.
적용 가능한 특성
다음 표에서는 Schema 요소에 적용할 수 있는 특성에 대해 설명합니다.
특성 이름 | 필수 여부 | 값 |
---|---|---|
Namespace |
예 |
개념적 모델의 네임스페이스입니다. Namespace 특성 값을 사용하여 형식의 정규화된 이름을 만들 수 있습니다. 예를 들어, Customer라는 EntityType이 Simple.Example.Model 네임스페이스에 있는 경우 EntityType의 정규화된 이름은 SimpleExampleModel.Customer입니다. System, Transient 또는 Edm 문자열은 Namespace 특성에 대한 값으로 사용할 수 없습니다. Namespace 특성 값은 SSDL 스키마 요소에 있는 Namespace 특성 값과 같을 수 없습니다. |
Alias |
아니요 |
네임스페이스 이름 대신 사용되는 식별자입니다. 예를 들어, Customer라는 EntityType이 Simple.Example.Model 네임스페이스에 있고 Alias 특성 값이 Model인 경우 Model.Customer를 EntityType의 정규화된 이름으로 사용할 수 있습니다. |
참고: |
---|
주석 특성(사용자 지정 XML 특성)을 원하는 수만큼 Schema 요소에 적용할 수 있습니다.그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다.두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다. |
예제
다음 예제에서는 EntityContainer 요소, 두 개의 EntityType 요소 및 한 개의 Association 요소를 포함하는 Schema 요소를 보여 줍니다.
<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm"
xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
Namespace="ExampleModel" Alias="Self">
<EntityContainer Name="ExampleModelContainer">
<EntitySet Name="Customers"
EntityType="ExampleModel.Customer" />
<EntitySet Name="Orders" EntityType="ExampleModel.Order" />
<AssociationSet
Name="CustomerOrder"
Association="ExampleModel.CustomerOrders">
<End Role="Customer" EntitySet="Customers" />
<End Role="Order" EntitySet="Orders" />
</AssociationSet>
</EntityContainer>
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Type="Int32" Name="CustomerId" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" />
<NavigationProperty
Name="Orders"
Relationship="ExampleModel.CustomerOrders"
FromRole="Customer" ToRole="Order" />
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Type="Int32" Name="OrderId" Nullable="false" />
<Property Type="Int32" Name="ProductId" Nullable="false" />
<Property Type="Int32" Name="Quantity" Nullable="false" />
<NavigationProperty
Name="Customer"
Relationship="ExampleModel.CustomerOrders"
FromRole="Order" ToRole="Customer" />
<Property Type="Int32" Name="CustomerId" Nullable="false" />
</EntityType>
<Association Name="CustomerOrders">
<End Type="ExampleModel.Customer"
Role="Customer" Multiplicity="1" />
<End Type="ExampleModel.Order"
Role="Order" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Customer">
<PropertyRef Name="CustomerId" />
</Principal>
<Dependent Role="Order">
<PropertyRef Name="CustomerId" />
</Dependent>
</ReferentialConstraint>
</Association>
</Schema>