다음을 통해 공유


Schema 요소(SSDL)

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

Schema 요소에는 다음 자식 요소가 0개 이상 포함될 수 있습니다.

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

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

적용 가능한 특성

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

특성 이름 필수 여부

Namespace

저장소 모델의 네임스페이스입니다. Namespace 특성 값을 사용하여 형식의 정규화된 이름을 만들 수 있습니다. 예를 들어, Customer라는 EntityType이 ExampleModel.Store 네임스페이스에 있는 경우 EntityType의 정규화된 이름은 ExampleModel.Store.Customer입니다.

System, Transient 또는 Edm 문자열은 Namespace 특성에 대한 값으로 사용할 수 없습니다. Namespace 특성 값은 CSDL 스키마 요소에 있는 Namespace 특성 값과 같을 수 없습니다.

Alias

아니요

네임스페이스 이름 대신 사용되는 식별자입니다. 예를 들어, Customer라는 EntityType이 ExampleModel.Store 네임스페이스에 있고 Alias 특성 값이 StorageModel인 경우 StorageModel.Customer를 EntityType의 정규화된 이름으로 사용할 수 있습니다.

Provider

데이터 공급자입니다. 자세한 내용은 Entity Framework 데이터 공급자를 참조하십시오.

ProviderManifestToken

반환할 공급자 매니페스트를 공급자에게 나타내는 토큰입니다. 정의된 토큰의 형식은 없으며 토큰의 값은 공급자가 정의합니다. SQL Server 공급자 매니페스트 토큰에 대한 자세한 내용은 Entity Framework용 .NET Framework Data Provider for SQL Server(SqlClient)를 참조하십시오.

예제

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

<Schema Namespace="ExampleModel.Store" 
      Alias="Self" Provider="System.Data.SqlClient" 
      ProviderManifestToken="2008" 
      xmlns="https://schemas.microsoft.com/ado/2009/02/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>

참고 항목

개념

Entity Framework 개요
SSDL 사양

기타 리소스

CSDL, SSDL 및 MSL 사양
ADO.NET Entity Data Model Tools