다음을 통해 공유


SSDL 사양

SSDL(스토리지 스키마 정의 언어)은 Entity Framework 애플리케이션의 스토리지 모델을 설명하는 XML 기반 언어입니다.

Entity Framework 애플리케이션에서 스토리지 모델 메타데이터는 SSDL로 작성된 .ssdl 파일에서 System.Data.Metadata.Edm.StoreItemCollection 인스턴스로 로드되며 System.Data.Metadata.Edm.MetadataWorkspace 클래스의 메서드를 사용하여 액세스할 수 있습니다. Entity Framework에서는 스토리지 모델 메타데이터를 사용하여 개념적 모델에 대한 쿼리를 저장소별 명령으로 변환합니다.

Entity Framework Designer(EF Designer)는 디자인 타임 시 스토리지 모델 정보를 .edmx 파일에 저장합니다. 빌드 시 Entity Designer는 .edmx 파일의 정보를 사용하여 런타임 시 Entity Framework에서 필요로 하는 .ssdl 파일을 만듭니다.

SSDL 버전은 XML 네임스페이스로 식별됩니다.

SSDL 버전 XML 네임스페이스
SSDL v1 https://schemas.microsoft.com/ado/2006/04/edm/ssdl
SSDL v2 https://schemas.microsoft.com/ado/2009/02/edm/ssdl
SSDL v3 https://schemas.microsoft.com/ado/2009/11/edm/ssdl

Association 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Association 요소는 기본 데이터베이스에서 외래 키 제약 조건에 참여하는 테이블 열을 지정합니다. 2개의 필수 자식 End 요소는 연결의 양쪽 끝에 있는 테이블과 각 끝의 다중성을 지정합니다. 선택적 ReferentialConstraint 요소는 관련 열뿐 아니라 연결의 주 끝과 종속 끝을 지정합니다. ReferentialConstraint 요소가 없으면 AssociationSetMapping 요소를 사용하여 연결의 열 매핑을 지정해야 합니다.

Association 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • End(2개만)
  • ReferentialConstraint(0개 또는 1개)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 Association 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 기본 데이터베이스에서 해당하는 외래 키 제약 조건의 이름

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Association 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 ReferentialConstraint 요소를 사용하여 FK_CustomerOrders 외래 키 제약 조건에 참여하는 열을 지정하는 Association 요소를 보여 줍니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

AssociationSet 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 AssociationSet 요소는 기본 데이터베이스의 두 테이블 간 외래 키 제약 조건을 나타냅니다. 외래 키 제약 조건에 참여하는 테이블 열은 Association 요소에 지정됩니다. 지정된 AssociationSet 요소에 해당하는 Association 요소는 AssociationSet 요소의 Association 특성에 지정됩니다.

SSDL 연결 집합은 AssociationSetMapping 요소로 CSDL 연결 집합에 매핑됩니다. 그러나 지정된 CSDL 연결 집합의 CSDL 연결이 ReferentialConstraint 요소를 사용하여 정의되는 경우 해당하는 AssociationSetMapping 요소가 필요하지 않습니다. 이 경우 AssociationSetMapping 요소가 있으면 이 요소가 정의하는 매핑이 ReferentialConstraint 요소로 재정의됩니다.

AssociationSet 요소는 다음에 나열된 순서대로 자식 요소를 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • End(0개 또는 2개)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 AssociationSet 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 연결 집합이 나타내는 외래 키 제약 조건의 이름
Association 외래 키 제약 조건에 참여하는 열을 정의하는 연결의 이름

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 AssociationSet 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 기본 데이터베이스의 FK_CustomerOrders 외래 키 제약 조건을 나타내는 AssociationSet 요소를 보여 줍니다.

 <AssociationSet Name="FK_CustomerOrders"
                 Association="ExampleModel.Store.FK_CustomerOrders">
   <End Role="Customers" EntitySet="Customers" />
   <End Role="Orders" EntitySet="Orders" />
 </AssociationSet>

CollectionType 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 CollectionType 요소는 함수의 반환 형식이 컬렉션임을 지정합니다. CollectionType 요소는 ReturnType 요소의 자식 요소입니다. 컬렉션 형식은 RowType 자식 요소를 사용하여 지정됩니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 CollectionType 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 CollectionType 요소를 사용하여 함수가 행 컬렉션을 반환하도록 지정하는 함수를 보여 줍니다.

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

CommandText 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 CommandText 요소는 데이터베이스에서 실행되는 SQL 문을 정의할 수 있는 Function 요소의 자식입니다. CommandText 요소를 사용하면 데이터베이스의 저장 프로시저와 비슷한 기능을 추가할 수 있지만 CommandText 요소는 스토리지 모델에서 정의합니다.

CommandText 요소는 자식 요소를 포함할 수 없습니다. CommandText 요소의 본문은 기본 데이터베이스에 대한 올바른 SQL 문이어야 합니다.

CommandText 요소에 적용할 수 있는 특성은 없습니다.

예시

다음 예제에서는 자식 CommandText 요소가 포함된 Function 요소를 보여 줍니다. UpdateProductInOrder 함수를 개념적 모델로 가져와서 ObjectContext에 메서드로 노출합니다.  

 <Function Name="UpdateProductInOrder" IsComposable="false">
   <CommandText>
     UPDATE Orders
     SET ProductId = @productId
     WHERE OrderId = @orderId;
   </CommandText>
   <Parameter Name="productId"
              Mode="In"
              Type="int"/>
   <Parameter Name="orderId"
              Mode="In"
              Type="int"/>
 </Function>

DefiningQuery 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 DefiningQuery 요소를 사용하면 기본 데이터베이스에서 직접 SQL 문을 실행할 수 있습니다. DefiningQuery 요소는 일반적으로 데이터베이스 뷰처럼 사용되지만 이 뷰는 데이터베이스 대신 스토리지 모델에서 정의됩니다. DefiningQuery 요소에 정의된 뷰는 EntitySetMapping 요소를 통해 개념적 모델의 엔터티 형식에 매핑될 수 있습니다. 이러한 매핑은 읽기 전용입니다.  

다음 SSDL 구문은 뷰를 검색하는 데 사용되는 쿼리가 포함된 DefiningQuery 요소가 뒤에 오는 EntitySet의 선언을 보여줍니다.

 <Schema>
     <EntitySet Name="Tables" EntityType="Self.STable">
         <DefiningQuery>
           SELECT  TABLE_CATALOG,
                   'test' as TABLE_SCHEMA,
                   TABLE_NAME
           FROM    INFORMATION_SCHEMA.TABLES
         </DefiningQuery>
     </EntitySet>
 </Schema>

Entity Framework에서 저장 프로시저를 사용하여 뷰를 통한 읽기/쓰기 시나리오를 활성화할 수 있습니다. 데이터 원본 뷰 또는 Entity SQL 뷰를 저장 프로시저별로 데이터를 검색하고 변경 내용을 처리하기 위한 기본 테이블로 사용할 수 있습니다.

DefiningQuery 요소를 사용하여 Microsoft SQL Server Compact 3.5를 대상으로 지정할 수 있습니다. SQL Server Compact 3.5에서는 저장 프로시저를 지원하지 않지만 DefiningQuery 요소를 사용하여 비슷한 기능을 구현할 수 있습니다. 이 요소는 프로그래밍 언어에 사용되는 데이터 형식과 데이터 소스의 데이터 형식 간에 불일치를 해결하기 위한 저장 프로시저를 만드는 데도 유용하게 사용할 수 있습니다. 예를 들어 데이터를 삭제하는 저장 프로시저와 같이 특정 매개 변수 집합을 받은 후에 다른 매개 변수 집합으로 저장 프로시저를 호출하는 DefiningQuery를 작성할 수 있습니다.

Dependent 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Dependent 요소는 ReferentialConstraint 요소의 자식 요소이며, 참조 제약 조건이라고도 하는 외래 키 제약 조건의 종속 끝을 정의합니다. Dependent 요소는 테이블에서 기본 키 열을 참조하는 열을 지정합니다. PropertyRef 요소는 참조되는 열을 지정합니다. Principal 요소는 Dependent 요소에 지정된 열이 참조하는 기본 키 열을 지정합니다.

Dependent 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • PropertyRef(0개 이상)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 Dependent 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
역할 해당하는 End 요소의 Role 특성을 사용한 경우 특성과 동일한 값이고, 사용하지 않은 경우 참조하는 열이 포함된 테이블 이름입니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Dependent 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 ReferentialConstraint 요소를 사용하여 FK_CustomerOrders 외래 키 제약 조건에 참여하는 열을 지정하는 Association 요소를 보여 줍니다. Dependent 요소는 Order 테이블의 CustomerId 열을 제약 조건의 종속 끝으로 지정합니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Documentation 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Documentation 요소를 사용하면 부모 요소에 정의된 개체에 대한 정보를 제공할 수 있습니다.

Documentation 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Summary: 부모 요소에 대한 간단한 설명입니다. (0개 또는 한 개의 요소)
  • LongDescription: 부모 요소에 대한 자세한 설명입니다. (0개 또는 한 개의 요소)

적용 가능한 특성

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Documentation 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 EntityType 요소의 자식 요소인 Documentation 요소를 보여 줍니다.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

End 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 End 요소는 기본 데이터베이스에서 외래 키 제약 조건의 한쪽 끝에 있는 테이블과 행 수를 지정합니다. End 요소는 Association 요소 또는 AssociationSet 요소의 자식 요소가 될 수 있습니다. 각 경우에 가능한 자식 요소와 적용 가능한 특성은 서로 다릅니다.

Association 요소의 자식인 End 요소

End 요소(Association 요소의 자식 요소)는 TypeMultiplicity 특성을 사용하여 외래 키 제약 조건의 끝에 있는 테이블과 행 수를 각각 지정합니다. 외래 키 제약 조건의 End는 SSDL 연결의 일부로 정의되며 SSDL 연결에는 정확히 두 개의 End가 있어야 합니다.

End 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(요소 0개 또는 1개)
  • OnDelete(요소 0개 또는 1개)
  • Annotation 요소(요소 0개 이상)

적용 가능한 특성

다음 표에서는 End 요소가 Association 요소의 자식인 경우 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
Type 외래 키 제약 조건의 끝에 있는 SSDL 엔터티 집합의 정규화된 이름입니다.
역할 아니요 해당하는 ReferentialConstraint 요소의 Principal 또는 Dependent 요소에 있는 Role 특성의 값입니다(사용되는 경우).
다중성 외래 키 제약 조건의 끝에 있을 수 있는 행 수에 따라 1, 0..1 또는 *입니다.
1은 외래 키 제약 조건의 끝에 정확히 행 1개가 있음을 나타냅니다.
0..1은 외래 키 제약 조건의 끝에 행 0개 또는 1개가 있음을 나타냅니다.
*는 외래 키 제약 조건의 끝에 행 0개 또는 1개 이상이 있음을 나타냅니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 End 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 FK_CustomerOrders 외래 키 제약 조건을 정의하는 Association 요소를 보여 줍니다. 각 End 요소에 지정된 Multiplicity 값은 Orders 테이블의 많은 행이 Customers 테이블의 행과 연결될 수 있지만 Customers 테이블의 한 행만 Orders 테이블의 행과 연결될 수 있음을 나타냅니다. 또한 OnDelete 요소는 Customers 테이블의 행이 삭제되면 Customers 테이블의 특정 행을 참조하는 Orders 테이블의 모든 행이 삭제될 것임을 나타냅니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

AssociationSet 요소의 자식인 End 요소

End 요소(AssociationSet 요소의 자식)는 기본 데이터베이스에서 외래 키 제약 조건의 한쪽 끝에 있는 테이블을 지정합니다.

End 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 End 요소가 AssociationSet 요소의 자식인 경우 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
EntitySet 외래 키 제약 조건의 끝에 있는 SSDL 엔터티 집합의 이름입니다.
역할 아니요 해당하는 Association 요소의 한 End 요소에 지정된 Role 특성 중 하나의 값입니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 End 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 두 End 요소가 포함된 AssociationSet 요소가 있는 EntityContainer 요소를 보여 줍니다.

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

EntityContainer 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 EntityContainer 요소는 Entity Framework 애플리케이션에서 기본 데이터 소스의 구조를 설명합니다. SSDL 엔터티 집합(EntitySet 요소에 정의됨)은 데이터베이스의 테이블을 나타내고, SSDL 엔터티 형식(EntityType 요소에 정의됨)은 테이블의 행을 나타내며, 연결 집합(AssociationSet 요소에 정의됨)은 데이터베이스의 외래 키 제약 조건을 나타냅니다. 스토리지 모델 엔터티 컨테이너는 EntityContainerMapping 요소를 통해 개념적 모델 엔터티 컨테이너에 매핑됩니다.

EntityContainer 요소는 Documentation 요소를 0개 또는 1개 포함할 수 있습니다. Documentation 요소가 있으면 다른 모든 자식 요소보다 앞에 와야 합니다.

EntityContainer 요소는 다음과 같은 자식 요소를 나열된 순서대로 0개 이상 포함할 수 있습니다.

  • EntitySet
  • AssociationSet
  • Annotation 요소

적용 가능한 특성

다음 표에서는 EntityContainer 요소에 적용될 수 있는 특성을 설명합니다.

특성 이름 필수
이름 엔터티 컨테이너의 이름입니다. 이 이름에는 마침표(.)가 포함될 수 없습니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 EntityContainer 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 엔터티 집합 2개와 연결 집합 1개를 정의하는 EntityContainer 요소를 보여 줍니다. 엔터티 형식 및 연결 형식 이름은 개념적 모델 네임스페이스 이름으로 정규화됩니다.

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

EntitySet 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 EntitySet 요소는 기본 데이터베이스의 테이블이나 뷰를 나타냅니다. SSDL의 EntityType 요소는 테이블이나 뷰의 행을 나타냅니다. EntitySet 요소의 EntityType 특성은 SSDL 엔터티 집합의 행을 나타내는 특정 SSDL 엔터티 형식을 지정합니다. CSDL 엔터티 집합과 SSDL 엔터티 집합 간의 매핑은 EntitySetMapping 요소에 지정됩니다.

EntitySet 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(요소 0개 또는 1개)
  • DefiningQuery(요소 0개 또는 1개)
  • Annotation 요소

적용 가능한 특성

다음 표에서는 EntitySet 요소에 적용할 수 있는 특성에 대해 설명합니다.

참고 항목

일부 특성(여기에 나열되지 않음)은 store 별칭으로 정규화될 수 있습니다. 이러한 특성은 모델을 업데이트할 때 모델 업데이트 마법사에서 사용됩니다.

특성 이름 필수
이름 엔터티 집합의 이름입니다.
EntityType 엔터티 집합에 포함되는 인스턴스의 엔터티 형식에 대한 정규화된 이름입니다.
스키마 아니요 데이터베이스 스키마입니다.
테이블 아니요 데이터베이스 테이블입니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 EntitySet 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 EntitySet 요소 2개와 AssociationSet 요소 1개가 있는 EntityContainer 요소를 보여 줍니다.

 <EntityContainer Name="ExampleModelStoreContainer">
   <EntitySet Name="Customers"
              EntityType="ExampleModel.Store.Customers"
              Schema="dbo" />
   <EntitySet Name="Orders"
              EntityType="ExampleModel.Store.Orders"
              Schema="dbo" />
   <AssociationSet Name="FK_CustomerOrders"
                   Association="ExampleModel.Store.FK_CustomerOrders">
     <End Role="Customers" EntitySet="Customers" />
     <End Role="Orders" EntitySet="Orders" />
   </AssociationSet>
 </EntityContainer>

EntityType 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 EntityType 요소는 기본 데이터베이스의 테이블 또는 뷰에 있는 행을 나타냅니다. SSDL의 EntitySet 요소는 행이 나타나는 테이블 또는 뷰를 나타냅니다. EntitySet 요소의 EntityType 특성은 SSDL 엔터티 집합의 행을 나타내는 특정 SSDL 엔터티 형식을 지정합니다. SSDL 엔터티 형식과 CSDL 엔터티 형식 간의 매핑은 EntityTypeMapping 요소에 지정됩니다.

EntityType 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(요소 0개 또는 1개)
  • Key(요소 0개 또는 1개)
  • Annotation 요소

적용 가능한 특성

다음 표에서는 EntityType 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 엔터티 형식의 이름. 이 값은 일반적으로 엔터티 형식이 나타내는 행이 있는 테이블의 이름과 동일합니다. 이 값에는 마침표(.)가 포함될 수 없습니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 EntityType 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 2개의 속성이 있는 EntityType 요소를 보여 줍니다.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

Function 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Function 요소는 기본 데이터베이스에 있는 저장 프로시저를 지정합니다.

Function 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Parameter(0개 이상)
  • CommandText(0개 또는 1개)
  • ReturnType(0개 이상)
  • Annotation 요소(0개 이상)

함수의 반환 형식은 ReturnType 요소 또는 ReturnType 특성(아래 참조)을 사용하여 지정해야 하지만 둘 다 사용할 수는 없습니다.

스토리지 모델에 지정된 저장 프로시저를 애플리케이션의 개념적 모델로 가져올 수 있습니다. 자세한 내용은 저장 프로시저로 쿼리를 참조하세요. Function 요소를 사용하여 스토리지 모델에서 사용자 지정 함수를 정의할 수도 있습니다.  

적용 가능한 특성

다음 표에서는 Function 요소에 적용할 수 있는 특성에 대해 설명합니다.

참고 항목

일부 특성(여기에 나열되지 않음)은 store 별칭으로 정규화될 수 있습니다. 이러한 특성은 모델을 업데이트할 때 모델 업데이트 마법사에서 사용됩니다.

특성 이름 필수
이름 저장 프로시저의 이름입니다.
ReturnType 아니요 저장 프로시저의 반환 형식입니다.
Aggregate 아니요 저장 프로시저가 집계 값을 반환하면 True이고, 그렇지 않으면 False입니다.
BuiltIn 아니요 함수가 기본 제공1 함수이면 True이고, 그렇지 않으면 False입니다.
StoreFunctionName 아니요 저장 프로시저의 이름입니다.
NiladicFunction 아니요 함수가 Niladic2 함수이면 True이고, 그렇지 않으면 False입니다.
IsComposable 아니요 함수가 구성 가능3 함수이면 True이고, 그렇지 않으면 False입니다.
ParameterTypeSemantics 아니요 함수 오버로드를 확인하는 데 사용되는 형식 의미 체계를 정의하는 열거형입니다. 열거형은 함수 정의별로 공급자 매니페스트에 정의됩니다. 기본값은 AllowImplicitConversion입니다.
스키마 아니요 저장 프로시저가 정의된 스키마의 이름입니다.

1 기본 제공 함수는 데이터베이스에 정의된 함수입니다. 스토리지 모델에 정의된 함수에 대한 자세한 내용은 CommandText 요소(SSDL)를 참조하세요.

2 Niladic 함수는 매개 변수를 허용하지 않는 함수이며 호출 시 괄호가 필요하지 않습니다.

3 한 함수의 출력이 다른 함수의 입력이 될 수 있는 경우 두 함수는 구성 가능합니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Function 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 UpdateOrderQuantity 저장 프로시저에 해당하는 Function 요소를 보여 줍니다. 저장 프로시저는 두 매개 변수를 받아들이며 값을 반환하지 않습니다.

 <Function Name="UpdateOrderQuantity"
           Aggregate="false"
           BuiltIn="false"
           NiladicFunction="false"
           IsComposable="false"
           ParameterTypeSemantics="AllowImplicitConversion"
           Schema="dbo">
   <Parameter Name="orderId" Type="int" Mode="In" />
   <Parameter Name="newQuantity" Type="int" Mode="In" />
 </Function>

Key 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Key 요소는 기본 데이터베이스 테이블의 기본 키를 나타냅니다. Key는 테이블의 행을 나타내는 EntityType 요소의 자식 요소입니다. 기본 키는 EntityType 요소에 정의된 1개 이상의 Property 요소를 참조하여 Key 요소에 정의됩니다.

Key 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • PropertyRef(0개 이상)
  • Annotation 요소

Key 요소에 적용할 수 있는 특성은 없습니다.

예시

다음 예제에서는 속성 1개를 참조하는 키가 있는 EntityType 요소를 보여 줍니다.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

OnDelete 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 OnDelete 요소는 외래 키 제약 조건에 참여하는 행이 삭제될 때 데이터베이스 동작을 반영합니다. 작업이 Cascade로 설정되어 있으면 삭제되는 행을 참조하는 행도 삭제됩니다. 작업이 None으로 설정되어 있으면 삭제되는 행을 참조하는 행이 함께 삭제되지 않습니다. OnDelete 요소는 End 요소의 자식 요소입니다.

OnDelete 요소는 다음에 나열된 순서대로 자식 요소를 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 OnDelete 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
동작 Cascade 또는 None. Restricted 값은 유효하지만 None과 동작이 동일합니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 OnDelete 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 FK_CustomerOrders 외래 키 제약 조건을 정의하는 Association 요소를 보여 줍니다. OnDelete 요소는 Customers 테이블의 행이 삭제되면 Customers 테이블의 특정 행을 참조하는 Orders 테이블의 모든 행이 삭제됨을 나타냅니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Parameter 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Parameter 요소는 Function 요소의 자식이며, 데이터베이스의 저장 프로시저에 대한 매개 변수를 지정합니다.

Parameter 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 Parameter 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 매개 변수의 이름입니다.
Type 매개 변수 유형입니다.
모드 아니요 매개 변수가 입력, 출력 또는 입력/출력 매개 변수인지에 따라 In, Out 또는 InOut입니다.
MaxLength 아니요 매개 변수의 최대 길이입니다.
정밀도 아니요 매개 변수의 자릿수입니다.
확장 아니요 매개 변수의 소수 자릿수입니다.
SRID 아니요 공간 시스템 참조 식별자입니다. 공간 형식의 매개 변수에만 유효합니다. 자세한 내용은 SRIDSRID(SQL Server)를 참조하세요.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Parameter 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 입력 매개 변수를 지정하는 두 Parameter 요소가 있는 Function 요소를 보여 줍니다.

 <Function Name="UpdateOrderQuantity"
           Aggregate="false"
           BuiltIn="false"
           NiladicFunction="false"
           IsComposable="false"
           ParameterTypeSemantics="AllowImplicitConversion"
           Schema="dbo">
   <Parameter Name="orderId" Type="int" Mode="In" />
   <Parameter Name="newQuantity" Type="int" Mode="In" />
 </Function>

Principal 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Principal 요소는 ReferentialConstraint 요소의 자식 요소이며, 참조 제약 조건이라고도 하는 외래 키 제약 조건의 주 끝을 정의합니다. Principal 요소는 다른 열이 참조하는 테이블의 기본 키 열을 지정합니다. PropertyRef 요소는 참조되는 열을 지정합니다. Dependent 요소는 Principal 요소에 지정된 기본 키 열을 참조하는 열을 지정합니다.

Principal 요소는 다음과 같은 자식 요소를 나열된 순서대로 포함할 수 있습니다.

  • PropertyRef(0개 이상)
  • Annotation 요소(0개 이상)

적용 가능한 특성

다음 표에서는 Principal 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
역할 해당하는 End 요소에 Role 특성이 사용된 경우에는 이 특성과 같은 값이고, 사용되지 않은 경우에는 참조된 열이 포함된 테이블의 이름입니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Principal 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 ReferentialConstraint 요소를 사용하여 FK_CustomerOrders 외래 키 제약 조건에 참여하는 열을 지정하는 Association 요소를 보여 줍니다. Principal 요소는 Customer 테이블의 CustomerId 열을 제약 조건의 주 끝으로 지정합니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

Property 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Property 요소는 기본 데이터베이스의 테이블 열을 나타냅니다. Property 요소는 테이블의 행을 나타내는 EntityType 요소의 자식 요소입니다. EntityType 요소에 정의된 각 Property 요소는 열을 나타냅니다.

Property 요소는 어떠한 자식 요소도 포함할 수 없습니다.

적용 가능한 특성

다음 표에서는 Property 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 해당 열의 이름입니다.
Type 해당 열의 형식입니다.
Nullable 아니요 해당 열에 null 값을 사용할 수 있는지 여부에 따라 True(기본값) 또는 False입니다.
DefaultValue 아니요 해당 열의 기본값입니다.
MaxLength 아니요 해당 열의 최대 길이입니다.
FixedLength 아니요 해당 열 값이 고정 길이 문자열로 저장될지 여부에 따라 True 또는 False입니다.
정밀도 아니요 해당 열의 전체 자릿수입니다.
확장 아니요 해당 열의 소수 자릿수입니다.
Unicode 아니요 해당 열 값이 유니코드 문자열로 저장될지 여부에 따라 True 또는 False입니다.
데이터 정렬 아니요 데이터 소스에 사용될 데이터 정렬 순서를 지정하는 문자열입니다.
SRID 아니요 공간 시스템 참조 식별자입니다. 공간 형식의 속성에만 유효합니다. 자세한 내용은 SRIDSRID(SQL Server)를 참조하세요.
StoreGeneratedPattern 아니요 None, Identity(해당 열 값이 데이터베이스에서 생성된 ID인 경우) 또는 Computed(해당 열 값이 데이터베이스에서 계산된 경우)입니다. RowType 속성에 유효하지 않습니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 Property 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 2개의 자식 Property 요소가 있는 EntityType 요소를 보여 줍니다.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

PropertyRef 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 PropertyRef 요소는 EntityType 요소에 대해 정의된 속성을 참조하여 해당 속성이 다음 역할 중 하나를 수행함을 나타냅니다.

  • EntityType이 나타내는 테이블의 기본 키에 속합니다. 1개 이상의 PropertyRef 요소를 사용하여 기본 키를 정의할 수 있습니다. 자세한 내용은 Key 요소를 참조하세요.
  • 참조 제약 조건의 종속 또는 주 끝. 자세한 내용은 ReferentialConstraint 요소를 참조하세요.

PropertyRef 요소는 다음 자식 요소만 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Annotation 요소

적용 가능한 특성

다음 표에서는 PropertyRef 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
이름 참조된 속성의 이름입니다.

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 PropertyRef 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 CSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 EntityType 요소에 대해 정의된 속성을 참조하여 기본 키를 정의하는 데 사용되는 PropertyRef 요소를 보여 줍니다.

 <EntityType Name="Customers">
   <Documentation>
     <Summary>Summary here.</Summary>
     <LongDescription>Long description here.</LongDescription>
   </Documentation>
   <Key>
     <PropertyRef Name="CustomerId" />
   </Key>
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
 </EntityType>

ReferentialConstraint 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 ReferentialConstraint 요소는 기본 데이터베이스의 외래 키 제약 조건(참조 무결성 제약 조건이라고도 함)을 나타냅니다. 제약 조건의 주 끝과 종속 끝은 각각 Principal 및 Dependent 자식 요소로 지정됩니다. 주 끝과 종속 끝에 참여하는 열은 PropertyRef 요소를 사용하여 참조됩니다.

ReferentialConstraint 요소는 Association 요소의 선택적 자식 요소입니다. Association 요소에 지정된 외래 키 제약 조건을 매핑하는 데 ReferentialConstraint 요소가 사용되지 않는 경우 AssociationSetMapping 요소를 사용하여 이 매핑을 수행해야 합니다.

ReferentialConstraint 요소는 다음 자식 요소를 포함할 수 있습니다.

  • Documentation(0개 또는 1개)
  • Principal(1개만)
  • Dependent(1개만)
  • Annotation 요소(0개 이상)

적용 가능한 특성

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 ReferentialConstraint 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 ReferentialConstraint 요소를 사용하여 FK_CustomerOrders 외래 키 제약 조건에 참여하는 열을 지정하는 Association 요소를 보여 줍니다.

 <Association Name="FK_CustomerOrders">
   <End Role="Customers"
        Type="ExampleModel.Store.Customers" Multiplicity="1">
     <OnDelete Action="Cascade" />
   </End>
   <End Role="Orders"
        Type="ExampleModel.Store.Orders" Multiplicity="*" />
   <ReferentialConstraint>
     <Principal Role="Customers">
       <PropertyRef Name="CustomerId" />
     </Principal>
     <Dependent Role="Orders">
       <PropertyRef Name="CustomerId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

ReturnType 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 ReturnType 요소는 Function 요소에 정의된 함수에 대한 반환 형식을 지정합니다. 함수 반환 형식은 ReturnType 특성을 사용하여 지정할 수도 있습니다.

함수의 반환 형식은 Type 특성 또는 ReturnType 요소로 지정됩니다.

ReturnType 요소는 다음 자식 요소를 포함할 수 있습니다.

  • CollectionType(1개)

참고 항목

주석 특성(사용자 지정 XML 특성)은 원하는 수만큼 ReturnType 요소에 적용할 수 있습니다. 그러나 사용자 지정 특성은 SSDL에 예약된 XML 네임스페이스에 속할 수 없습니다. 두 사용자 지정 특성의 정규화된 이름은 서로 같을 수 없습니다.

예시

다음 예제에서는 행 컬렉션을 반환하는 Function을 사용합니다.

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

RowType 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 RowType 요소는 명명되지 않은 구조를 저장소에 정의된 함수에 대한 반환 형식으로 정의합니다.

RowType 요소는 CollectionType 요소의 자식 요소입니다.

RowType 요소는 다음 자식 요소를 포함할 수 있습니다.

  • Property(1개 이상)

예시

다음 예제에서는 CollectionType 요소를 사용하여 RowType 요소에 지정된 대로 함수가 행 컬렉션을 반환하도록 지정하는 저장소 함수를 보여 줍니다.

   <Function Name="GetProducts" IsComposable="true" Schema="dbo">
     <ReturnType>
       <CollectionType>
         <RowType>
           <Property Name="ProductID" Type="int" Nullable="false" />
           <Property Name="CategoryID" Type="bigint" Nullable="false" />
           <Property Name="ProductName" Type="nvarchar" MaxLength="40" Nullable="false" />
           <Property Name="UnitPrice" Type="money" />
           <Property Name="Discontinued" Type="bit" />
         </RowType>
       </CollectionType>
     </ReturnType>
   </Function>

스키마 요소(SSDL)

SSDL(저장소 스키마 정의 언어)의 Schema 요소는 스토리지 모델 정의의 루트 요소입니다. 이 요소에는 스토리지 모델을 구성하는 개체, 함수 및 컨테이너에 대한 정의가 포함되어 있습니다.

Schema 요소는 다음 자식 요소를 0개 이상 포함할 수 있습니다.

  • Association
  • EntityType
  • EntityContainer
  • 함수

Schema 요소는 Namespace 특성을 사용하여 스토리지 모델에서 엔터티 형식 및 연결 개체에 대한 네임스페이스를 정의합니다. 네임스페이스 내에서 두 개체의 이름이 서로 같을 수 없습니다.

스토리지 모델 네임스페이스는 Schema 요소의 XML 네임스페이스와 다릅니다. Namespace 특성으로 정의되는 스토리지 모델 네임스페이스는 엔터티 형식 및 연결 형식에 대한 논리적 컨테이너입니다. xmlns 특성이 나타내는 Schema 요소의 XML 네임스페이스는 Schema 요소의 자식 요소 및 특성에 대한 기본 네임스페이스입니다. https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl(여기서 YYYY는 연도, MM은 월) 형식의 XML 네임스페이스는 SSDL용으로 예약됩니다. 사용자 지정 요소 및 특성은 이러한 형식의 네임스페이스에 있을 수 없습니다.

적용 가능한 특성

다음 표에서는 Schema 요소에 적용할 수 있는 특성에 대해 설명합니다.

특성 이름 필수
네임스페이스 스토리지 모델의 네임스페이스입니다. Namespace 특성 값을 사용하여 형식의 정규화된 이름을 구성할 수 있습니다. 예를 들어, Customer라는 EntityType이 ExampleModel.Store 네임스페이스에 있는 경우 EntityType의 정규화된 이름은 ExampleModel.Store.Customer입니다.
Namespace 특성 값으로 System, Transient 또는 Edm 문자열은 사용할 수 없습니다. Namespace 특성 값은 CSDL 스키마 요소에 있는 Namespace 특성 값과 같을 수 없습니다.
Alias 아니요 네임스페이스 이름 대신 사용되는 식별자입니다. 예를 들어, Customer라는 EntityType이 ExampleModel.Store 네임스페이스에 있고 Alias 특성 값이 StorageModel인 경우 StorageModel.Customer를 EntityType의 정규화된 이름으로 사용할 수 있습니다.
공급자 데이터 공급자입니다.
ProviderManifestToken 반환할 공급자 매니페스트를 공급자에게 나타내는 토큰입니다. 정의된 토큰의 형식은 없으며 토큰의 값은 공급자가 정의합니다. SQL Server 공급자 매니페스트 토큰에 대한 자세한 내용은 Entity Framework용 SqlClient를 참조하세요.

예시

다음 예제에서는 EntityContainer 요소, EntityType 요소 2개 및 Association 요소 1개를 포함하는 Schema 요소를 보여 줍니다.

 <Schema Namespace="ExampleModel.Store"
       Alias="Self" Provider="System.Data.SqlClient"
       ProviderManifestToken="2008"
       xmlns="https://schemas.microsoft.com/ado/2009/11/edm/ssdl">
   <EntityContainer Name="ExampleModelStoreContainer">
     <EntitySet Name="Customers"
                EntityType="ExampleModel.Store.Customers"
                Schema="dbo" />
     <EntitySet Name="Orders"
                EntityType="ExampleModel.Store.Orders"
                Schema="dbo" />
     <AssociationSet Name="FK_CustomerOrders"
                     Association="ExampleModel.Store.FK_CustomerOrders">
       <End Role="Customers" EntitySet="Customers" />
       <End Role="Orders" EntitySet="Orders" />
     </AssociationSet>
   </EntityContainer>
   <EntityType Name="Customers">
     <Documentation>
       <Summary>Summary here.</Summary>
       <LongDescription>Long description here.</LongDescription>
     </Documentation>
     <Key>
       <PropertyRef Name="CustomerId" />
     </Key>
     <Property Name="CustomerId" Type="int" Nullable="false" />
     <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
   </EntityType>
   <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
     <Key>
       <PropertyRef Name="OrderId" />
     </Key>
     <Property Name="OrderId" Type="int" Nullable="false"
               c:CustomAttribute="someValue"/>
     <Property Name="ProductId" Type="int" Nullable="false" />
     <Property Name="Quantity" Type="int" Nullable="false" />
     <Property Name="CustomerId" Type="int" Nullable="false" />
     <c:CustomElement>
       Custom data here.
     </c:CustomElement>
   </EntityType>
   <Association Name="FK_CustomerOrders">
     <End Role="Customers"
          Type="ExampleModel.Store.Customers" Multiplicity="1">
       <OnDelete Action="Cascade" />
     </End>
     <End Role="Orders"
          Type="ExampleModel.Store.Orders" Multiplicity="*" />
     <ReferentialConstraint>
       <Principal Role="Customers">
         <PropertyRef Name="CustomerId" />
       </Principal>
       <Dependent Role="Orders">
         <PropertyRef Name="CustomerId" />
       </Dependent>
     </ReferentialConstraint>
   </Association>
   <Function Name="UpdateOrderQuantity"
             Aggregate="false"
             BuiltIn="false"
             NiladicFunction="false"
             IsComposable="false"
             ParameterTypeSemantics="AllowImplicitConversion"
             Schema="dbo">
     <Parameter Name="orderId" Type="int" Mode="In" />
     <Parameter Name="newQuantity" Type="int" Mode="In" />
   </Function>
   <Function Name="UpdateProductInOrder" IsComposable="false">
     <CommandText>
       UPDATE Orders
       SET ProductId = @productId
       WHERE OrderId = @orderId;
     </CommandText>
     <Parameter Name="productId"
                Mode="In"
                Type="int"/>
     <Parameter Name="orderId"
                Mode="In"
                Type="int"/>
   </Function>
 </Schema>

주석 특성

SSDL(스토리지 스키마 정의 언어)의 주석 특성은 스토리지 모델의 요소에 대한 추가 메타데이터를 제공하는 스토리지 모델의 사용자 지정 XML 특성입니다. 주석 특성은 올바른 XML 구조를 가져야 할 뿐 아니라 다음 제약 조건을 충족해야 합니다.

  • 주석 특성은 SSDL용으로 예약된 XML 네임스페이스에 속하지 않아야 합니다.
  • 두 주석 특성의 정규화된 이름은 서로 같을 수 없습니다.

두 개 이상의 주석 특성을 지정된 SSDL 요소에 적용할 수 있습니다. 주석 요소에 포함된 메타데이터는 System.Data.Metadata.Edm 네임스페이스의 클래스를 사용하여 런타임에 액세스할 수 있습니다.

예시

다음 예제에서는 주석 특성이 OrderId 속성에 적용된 EntityType 요소를 보여 줍니다. 또한 EntityType 요소에 추가된 주석 요소를 보여 줍니다.

 <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
   <Key>
     <PropertyRef Name="OrderId" />
   </Key>
   <Property Name="OrderId" Type="int" Nullable="false"
             c:CustomAttribute="someValue"/>
   <Property Name="ProductId" Type="int" Nullable="false" />
   <Property Name="Quantity" Type="int" Nullable="false" />
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <c:CustomElement>
     Custom data here.
   </c:CustomElement>
 </EntityType>

Annotation 요소(SSDL)

SSDL(스토리지 스키마 정의 언어)의 Annotation 요소는 스토리지 모델에서 스토리지 모델에 대한 추가 메타데이터를 제공하는 사용자 지정 XML 요소입니다. Annotation 요소는 올바른 XML 구조를 가져야 함은 물론 다음 제약 조건이 적용됩니다.

  • Annotation 요소는 SSDL용으로 예약된 XML 네임스페이스에 속하지 않아야 합니다.
  • 두 Annotation 요소의 정규화된 이름은 서로 같을 수 없습니다.
  • Annotation 요소는 제공된 SSDL 요소의 다른 모든 자식 요소 뒤에 나타나야 합니다.

두 개 이상의 Annotation 요소가 제공된 SSDL 요소의 자식이 될 수 있습니다. 버전 4부터 주석 요소에 포함된 메타데이터는 런타임 시 System.Data.Metadata.Edm 네임스페이스의 클래스를 사용하여 액세스할 수 있습니다.

예시

다음 예제에서는 주석 요소(CustomElement)가 포함된 EntityType 요소를 보여 줍니다. 이 예제에서는 OrderId 속성에 적용된 주석 특성도 보여 줍니다.

 <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
   <Key>
     <PropertyRef Name="OrderId" />
   </Key>
   <Property Name="OrderId" Type="int" Nullable="false"
             c:CustomAttribute="someValue"/>
   <Property Name="ProductId" Type="int" Nullable="false" />
   <Property Name="Quantity" Type="int" Nullable="false" />
   <Property Name="CustomerId" Type="int" Nullable="false" />
   <c:CustomElement>
     Custom data here.
   </c:CustomElement>
 </EntityType>

패싯(SSDL)

SSDL(저장소 스키마 정의 언어)의 패싯은 Property 요소에 지정된 열 형식에 대한 제약 조건을 나타냅니다. 패싯은 Property 요소에 대한 XML 특성으로 구현됩니다.

다음 표에서는 SSDL에서 지원되는 패싯에 대해 설명합니다.

패싯 설명
데이터 정렬 속성 값에 대한 비교 및 순서 지정 작업을 수행할 때 사용할 데이터 정렬 순서 또는 정렬 순서를 지정합니다.
FixedLength 열 값 길이가 다양할 수 있는지 여부를 지정합니다.
MaxLength 열 값의 최대 길이를 지정합니다.
정밀도 Decimal 형식의 속성의 경우 속성 값에 포함할 수 있는 자릿수를 지정합니다. Time, DateTime, DateTimeOffset 형식의 속성의 경우 열 값의 소수 부분(초) 자릿수를 지정합니다.
확장 열 값에 대한 소수점 오른쪽의 자릿수를 지정합니다.
Unicode 열 값을 유니코드로 저장할지 여부를 나타냅니다.