Udostępnij za pośrednictwem


Specyfikacja SSDL

Uwaga

Program SSDL w wersji 1 jest nieobsługiwany. Zaktualizuj do wersji 3

Przechowywanie języka definicji schematu (SSDL) to język oparty na formacie XML, który opisuje model przechowywania aplikacji Platformy Entity Framework.

W aplikacji platformy Entity Framework metadane modelu magazynu są ładowane z pliku SSDL (zapisanego w programie SSDL) do wystąpienia klasy System.Data.Metadata.Edm.StoreItemCollection i są dostępne przy użyciu metod w klasie System.Data.Metadata.Edm.MetadataWorkspace. Platforma Entity Framework używa metadanych modelu magazynu do tłumaczenia zapytań na model koncepcyjny w celu przechowywania poleceń specyficznych dla magazynu.

Program Entity Framework Designer (EF Designer) przechowuje informacje o modelu magazynu w pliku edmx w czasie projektowania. W czasie kompilacji Projektant jednostek używa informacji w pliku edmx do utworzenia pliku ssdl wymaganego przez program Entity Framework w czasie wykonywania.

Wersje dysków SSDL są rozróżniane przez przestrzenie nazw XML.

Wersja programu SSDL Przestrzeń nazw 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, element (SSDL)

Element skojarzenia w języku definicji schematu magazynu (SSDL) określa kolumny tabeli, które uczestniczą w ograniczeniu klucza obcego w bazowej bazie danych. Dwa wymagane podrzędne elementy końcowe określają tabele na końcach skojarzenia i wielościeżność na każdym końcu. Opcjonalny element ReferentialConstraint określa główne i zależne końce skojarzenia, a także uczestniczących kolumn. Jeśli nie ma elementu ReferentialConstraint , należy użyć elementu AssociationSetMapping, aby określić mapowania kolumn dla skojarzenia.

Element Skojarzenie może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jedna)
  • Koniec (dokładnie dwa)
  • ReferentialConstraint (zero lub jeden)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Skojarzenie.

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa odpowiedniego ograniczenia klucza obcego w bazowej bazie danych.

Uwaga

Do elementu Skojarzenie można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie pokazano element skojarzenia , który używa elementu ReferentialConstraint do określania kolumn uczestniczących w ograniczeniu klucza obcego FK_CustomerOrders :

 <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, element (SSDL)

Element AssociationSet w języku definicji schematu magazynu (SSDL) reprezentuje ograniczenie klucza obcego między dwiema tabelami w bazowej bazie danych. Kolumny tabeli, które uczestniczą w ograniczeniu klucza obcego, są określone w elemecie Skojarzenie. Element skojarzenia odpowiadający podanemu elementowi AssociationSet jest określony w atrybucie Skojarzenie elementu AssociationSet.

Zestawy skojarzeń SSDL są mapowane na zestawy skojarzeń CSDL przez element AssociationSetMapping. Jeśli jednak skojarzenie CSDL dla danego zestawu skojarzeń CSDL jest definiowane przy użyciu elementu ReferentialConstraint, nie jest wymagany żaden odpowiedni element AssociationSetMapping . W takim przypadku, jeśli element AssociationSetMapping jest obecny, mapowania, które definiuje, zostaną zastąpione przez element ReferentialConstraint .

Element AssociationSet może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jedna)
  • Koniec (zero lub dwa)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu AssociationSet .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa ograniczenia klucza obcego reprezentowanego przez zestaw skojarzeń.
Stowarzyszenie Tak Nazwa skojarzenia definiującego kolumny, które uczestniczą w ograniczeniu klucza obcego.

Uwaga

Do elementu AssociationSet można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie pokazano element AssociationSet reprezentujący FK_CustomerOrders ograniczenie klucza obcego w bazowej bazie danych:

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

CollectionType, element (SSDL)

Element CollectionType w języku definicji schematu magazynu (SSDL) określa, że zwracany typ funkcji jest kolekcją. Element CollectionType jest elementem podrzędnym elementu ReturnType. Typ kolekcji jest określony przy użyciu elementu podrzędnego RowType:

Uwaga

Do elementu CollectionType można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono funkcję, która używa elementu CollectionType , aby określić, że funkcja zwraca kolekcję wierszy.

   <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, element (SSDL)

Element CommandText w magazynie języka definicji schematu (SSDL) jest elementem podrzędnym elementu funkcji, który umożliwia zdefiniowanie instrukcji SQL wykonywanej w bazie danych. Element CommandText umożliwia dodanie funkcji podobnej do procedury składowanej w bazie danych, ale element CommandText jest definiowany w modelu magazynu.

Element CommandText nie może mieć elementów podrzędnych. Treść elementu CommandText musi być prawidłową instrukcją SQL dla bazowej bazy danych.

Żadne atrybuty nie mają zastosowania do elementu CommandText .

Przykład

W poniższym przykładzie przedstawiono element funkcji z podrzędnym elementem CommandText . Uwidacznianie funkcji UpdateProductInOrder jako metody w obiekcie ObjectContext przez zaimportowanie jej do modelu koncepcyjnego.  

 <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, element (SSDL)

Element DefiningQuery w języku definicji schematu magazynu (SSDL) umożliwia wykonywanie instrukcji SQL bezpośrednio w bazowej bazie danych. Element DefinedQuery jest często używany jak widok bazy danych, ale widok jest zdefiniowany w modelu magazynu zamiast bazy danych. Widok zdefiniowany w elemencji DefinedQuery można zamapować na typ jednostki w modelu koncepcyjnym za pomocą elementu EntitySetMapping. Te mapowania są tylko do odczytu.  

Poniższa składnia SSDL przedstawia deklarację zestawu EntitySet , po którym następuje element DefiningQuery zawierający zapytanie używane do pobierania widoku.

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

Aby włączyć scenariusze odczytu i zapisu w widokach, można użyć procedur składowanych w programie Entity Framework. Możesz użyć widoku źródła danych lub widoku SQL jednostki jako tabeli podstawowej do pobierania danych i przetwarzania zmian przez procedury składowane.

Możesz użyć elementu DefiningQuery , aby kierować do programu Microsoft SQL Server Compact 3.5. Chociaż program SQL Server Compact 3.5 nie obsługuje procedur składowanych, można zaimplementować podobne funkcje za pomocą elementu DefiningQuery . Innym miejscem, w którym może być przydatne, jest utworzenie procedur składowanych w celu przezwyciężenia niezgodności między typami danych używanymi w języku programowania i źródła danych. Można napisać zapytanie DefiningQuery , które przyjmuje określony zestaw parametrów, a następnie wywołuje procedurę składowaną z innym zestawem parametrów, na przykład procedurą składowaną, która usuwa dane.

Zależny element (SSDL)

Element zależny w języku definicji schematu magazynu (SSDL) jest elementem podrzędnym elementu ReferentialConstraint, który definiuje zależny koniec ograniczenia klucza obcego (nazywany również ograniczeniem odwołania). Element Zależny określa kolumnę (lub kolumny) w tabeli odwołującej się do kolumny klucza podstawowego (lub kolumn). Elementy PropertyRef określają, do których kolumn są przywoływanych. Element Principal określa kolumny klucza podstawowego, do których odwołują się kolumny określone w elemencie Zależny.

Element zależny może mieć następujące elementy podrzędne (w kolejności wymienionej):

  • PropertyRef (co najmniej jeden)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Zależne .

Nazwa atrybutu Jest wymagany Wartość
Rola Tak Ta sama wartość co atrybut roli (jeśli jest używany) odpowiadającego mu elementu End. W przeciwnym razie nazwa tabeli zawierającej kolumnę odwołującą się.

Uwaga

Do elementu Zależne można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element skojarzenia, który używa elementu ReferentialConstraint do określania kolumn uczestniczących w FK_CustomerOrders ograniczenia klucza obcego. Element Zależny określa kolumnę CustomerId tabeli Order jako zależny koniec ograniczenia.

 <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, element (SSDL)

Element Documentation w magazynie języka definicji schematu (SSDL) może służyć do dostarczania informacji o obiekcie zdefiniowanym w elemecie nadrzędnym.

Element Documentation może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Podsumowanie: krótki opis elementu nadrzędnego. (zero lub jeden element)
  • LongDescription: obszerny opis elementu nadrzędnego. (zero lub jeden element)

Odpowiednie atrybuty

Do elementu Documentation można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie pokazano element Documentation jako element podrzędny elementu 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>

End, element (SSDL)

Element End w magazynie języka definicji schematu (SSDL) określa tabelę i liczbę wierszy na jednym końcu ograniczenia klucza obcego w bazowej bazie danych. Element End może być elementem podrzędnym elementu Skojarzenie lub elementem AssociationSet. W każdym przypadku możliwe elementy podrzędne i odpowiednie atrybuty są inne.

End, element jako element podrzędny elementu skojarzenia

Element End (jako element podrzędny elementu Skojarzenie ) określa tabelę i liczbę wierszy na końcu ograniczenia klucza obcego odpowiednio atrybutami Type i Multiplicity . Końce ograniczenia klucza obcego są definiowane jako część skojarzenia SSDL; Skojarzenie SSDL musi mieć dokładnie dwa końce.

Element End może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jeden element)
  • OnDelete (zero lub jeden element)
  • Elementy adnotacji (zero lub więcej elementów)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu End , gdy jest elementem podrzędnym elementu Skojarzenie .

Nazwa atrybutu Jest wymagany Wartość
Type Tak W pełni kwalifikowana nazwa zestawu jednostek SSDL, który znajduje się na końcu ograniczenia klucza obcego.
Rola Nie. Wartość atrybutu Rola w elemecie Principal lub Dependent odpowiedniego elementu ReferentialConstraint (jeśli jest używana).
Kardynalność Tak 1, 0..1 lub * w zależności od liczby wierszy, które mogą znajdować się na końcu ograniczenia klucza obcego.
1 wskazuje, że na końcu ograniczenia klucza obcego istnieje dokładnie jeden wiersz.
0..1 wskazuje, że na końcu ograniczenia klucza obcego istnieje zero lub jeden wiersz.
* wskazuje, że na końcu ograniczenia klucza obcego istnieje zero, jeden lub więcej wierszy.

Uwaga

Do elementu End można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element skojarzenia, który definiuje FK_CustomerOrders ograniczenie klucza obcego. Wartości wielodostępności określone w każdym elemplecie End wskazują, że wiele wierszy w tabeli Orders może być skojarzonych z wierszem w tabeli Customers, ale tylko jeden wiersz w tabeli Customers może być skojarzony z wierszem w tabeli Zamówienia. Ponadto element OnDelete wskazuje, że wszystkie wiersze w tabeli Orders odwołujące się do określonego wiersza w tabeli Customers zostaną usunięte, jeśli wiersz w tabeli Customers zostanie usunięty.

 <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>

End, element jako element podrzędny elementu AssociationSet

Element End (jako element podrzędny elementu AssociationSet ) określa tabelę na jednym końcu ograniczenia klucza obcego w bazowej bazie danych.

Element End może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jedna)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu End , gdy jest on elementem podrzędnym elementu AssociationSet .

Nazwa atrybutu Jest wymagany Wartość
EntitySet Tak Nazwa zestawu jednostek SSDL, który znajduje się na końcu ograniczenia klucza obcego.
Rola Nie. Wartość jednego z atrybutów roli określonych w jednym elemecie Końcowym odpowiedniego elementu skojarzenia.

Uwaga

Do elementu End można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

Poniższy przykład przedstawia element EntityContainer z elementem AssociationSet z dwoma elementami końcowymi :

 <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, element (SSDL)

Element EntityContainer w języku definicji schematu (SSDL) opisuje strukturę bazowego źródła danych w aplikacji Entity Framework: zestawy jednostek SSDL (zdefiniowane w elementach EntitySet) reprezentują tabele w bazie danych, typy jednostek SSDL (zdefiniowane w elementach EntityType) reprezentują wiersze w tabeli, a zestawy skojarzeń (zdefiniowane w elementach AssociationSet) reprezentują ograniczenia klucza obcego w bazie danych. Kontener jednostki modelu magazynu jest mapowy na kontener jednostki modelu koncepcyjnego za pomocą elementu EntityContainerMapping.

Element EntityContainer może mieć zero lub jeden element dokumentacji. Jeśli element Documentation jest obecny, musi poprzedzać wszystkie inne elementy podrzędne.

Element EntityContainer może mieć zero lub więcej z następujących elementów podrzędnych (w kolejności wymienionej):

  • EntitySet
  • Zestaw skojarzeń
  • Elementy adnotacji

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu EntityContainer .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa kontenera jednostki. Ta nazwa nie może zawierać kropek (.).

Uwaga

Do elementu EntityContainer można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element EntityContainer , który definiuje dwa zestawy jednostek i jeden zestaw skojarzeń. Należy pamiętać, że nazwy typów jednostek i typów skojarzeń są kwalifikowane przez nazwę przestrzeni nazw modelu koncepcyjnego.

 <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, element (SSDL)

Element EntitySet w języku definicji schematu magazynu (SSDL) reprezentuje tabelę lub widok w bazowej bazie danych. Element EntityType w programie SSDL reprezentuje wiersz w tabeli lub widoku. Atrybut EntityType elementu EntitySet określa określony typ jednostki SSDL reprezentujący wiersze w zestawie jednostek SSDL. Mapowanie między zestawem jednostek CSDL a zestawem jednostek SSDL jest określone w elemecie EntitySetMapping.

Element EntitySet może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jeden element)
  • Definiowanie zapytania (zero lub jeden element)
  • Elementy adnotacji

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu EntitySet .

Uwaga

Niektóre atrybuty (niewymienione w tym miejscu) mogą być kwalifikowane z aliasem sklepu. Te atrybuty są używane przez Kreatora aktualizacji modelu podczas aktualizowania modelu.

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa zestawu jednostek.
Typ jednostki Tak W pełni kwalifikowana nazwa typu jednostki, dla którego zestaw jednostek zawiera wystąpienia.
Schemat Nie. Schemat bazy danych.
Tabela Nie. Tabela bazy danych.

Uwaga

Do elementu EntitySet można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element EntityContainer , który ma dwa elementy EntitySet i jeden element AssociationSet :

 <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, element (SSDL)

Element EntityType w języku definicji schematu magazynu (SSDL) reprezentuje wiersz w tabeli lub widoku bazowej bazy danych. Element EntitySet w programie SSDL reprezentuje tabelę lub widok, w którym występują wiersze. Atrybut EntityType elementu EntitySet określa określony typ jednostki SSDL reprezentujący wiersze w zestawie jednostek SSDL. Mapowanie między typem jednostki SSDL a typem jednostki CSDL jest określone w elemecie EntityTypeMapping.

Element EntityType może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jeden element)
  • Klucz (zero lub jeden element)
  • Elementy adnotacji

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu EntityType .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa typu jednostki. Ta wartość jest zwykle taka sama jak nazwa tabeli, w której typ jednostki reprezentuje wiersz. Ta wartość nie może zawierać kropek (.).

Uwaga

Do elementu EntityType można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element EntityType z dwiema właściwościami:

 <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, element (SSDL)

Element Funkcji w języku definicji schematu magazynu (SSDL) określa procedurę składowaną, która istnieje w bazowej bazie danych.

Element Function może zawierać następujące elementy podrzędne (w kolejności wymienionej):

  • Dokumentacja (zero lub jedna)
  • Parametr (zero lub więcej)
  • CommandText (zero lub jeden)
  • ReturnType (zero lub więcej)
  • Elementy adnotacji (zero lub więcej)

Typ zwracany dla funkcji musi być określony za pomocą elementu ReturnType lub atrybutu ReturnType (patrz poniżej), ale nie obu tych elementów.

Procedury składowane określone w modelu magazynu można zaimportować do koncepcyjnego modelu aplikacji. Aby uzyskać więcej informacji, zobacz Wykonywanie zapytań za pomocą procedur składowanych. Element funkcji może również służyć do definiowania funkcji niestandardowych w modelu magazynu.  

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Funkcji .

Uwaga

Niektóre atrybuty (niewymienione w tym miejscu) mogą być kwalifikowane z aliasem sklepu. Te atrybuty są używane przez Kreatora aktualizacji modelu podczas aktualizowania modelu.

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa procedury składowanej.
ReturnType Nie. Zwracany typ procedury składowanej.
Agreguj Nie. Wartość True , jeśli procedura składowana zwraca wartość agregowaną; w przeciwnym razie wartość False.
Wbudowane Nie. Wartość True , jeśli funkcja jest wbudowanąfunkcją 1 ; w przeciwnym razie wartość False.
StoreFunctionName Nie. Nazwa procedury składowanej.
NiladicFunction Nie. Prawda, jeśli funkcja jest zerowąfunkcją 2 ; W przeciwnym razie wartość false .
IsComposable Nie. Wartość true , jeśli funkcja jest funkcją komponowalne3 ; W przeciwnym razie wartość false .
ParameterTypeSemantics Nie. Wyliczenie, które definiuje semantykę typów używaną do rozpoznawania przeciążeń funkcji. Wyliczenie jest definiowane w manifeście dostawcy dla definicji funkcji. Wartość domyślna to AllowImplicitConversion.
Schemat Nie. Nazwa schematu, w którym zdefiniowano procedurę składowaną.

1 Wbudowana funkcja jest funkcją zdefiniowaną w bazie danych. Aby uzyskać informacje o funkcjach zdefiniowanych w modelu magazynu, zobacz CommandText, Element (SSDL).

2 Funkcja niladic jest funkcją, która nie akceptuje żadnych parametrów, a po wywołaniu nie wymaga nawiasów.

3 Dwie funkcje są komponowalne, jeśli dane wyjściowe jednej funkcji mogą być danymi wejściowymi drugiej funkcji.

Uwaga

Do elementu funkcji można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element funkcji odpowiadający procedurze składowanej UpdateOrderQuantity . Procedura składowana akceptuje dwa parametry i nie zwraca wartości.

 <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, element (SSDL)

Element Key w magazynie języka definicji schematu (SSDL) reprezentuje klucz podstawowy tabeli w bazowej bazie danych. Klucz jest elementem podrzędnym elementu EntityType, który reprezentuje wiersz w tabeli. Klucz podstawowy jest definiowany w elemencie Klucz , odwołując się do co najmniej jednego elementu właściwości zdefiniowanego w elemencie EntityType .

Element Klucz może zawierać następujące elementy podrzędne (w podanej kolejności):

  • PropertyRef (co najmniej jeden)
  • Elementy adnotacji

Żadne atrybuty nie mają zastosowania do elementu Klucz .

Przykład

W poniższym przykładzie przedstawiono element EntityType z kluczem odwołującym się do jednej właściwości:

 <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, element (SSDL)

Element OnDelete w języku definicji schematu magazynu (SSDL) odzwierciedla zachowanie bazy danych po usunięciu wiersza, który uczestniczy w ograniczeniu klucza obcego. Jeśli akcja jest ustawiona na kaskadową, wiersze odwołujące się do usuniętego wiersza również zostaną usunięte. Jeśli akcja jest ustawiona na Brak, wiersze odwołujące się do usuniętego wiersza nie są również usuwane. Element OnDelete jest elementem podrzędnym elementu End.

Element OnDelete może zawierać następujące elementy podrzędne (w podanej kolejności):

  • Dokumentacja (zero lub jedna)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu OnDelete .

Nazwa atrybutu Jest wymagany Wartość
Akcja Tak Kaskada lub Brak. (Wartość Ograniczenie jest prawidłowe, ale ma takie samo zachowanie jak Brak.

Uwaga

Do elementu OnDelete można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element skojarzenia, który definiuje FK_CustomerOrders ograniczenie klucza obcego. Element OnDelete wskazuje, że wszystkie wiersze w tabeli Orders odwołujące się do określonego wiersza w tabeli Customers zostaną usunięte, jeśli wiersz w tabeli Customers zostanie usunięty.

 <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, element (SSDL)

Element Parametr w języku definicji schematu magazynu (SSDL) jest elementem podrzędnym elementu funkcji, który określa parametry procedury składowanej w bazie danych.

Element Parametr może mieć następujące elementy podrzędne (w kolejności wymienionej):

  • Dokumentacja (zero lub jedna)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Parametr .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa parametru.
Type Tak Typ parametru.
Tryb Nie. In, Out lub InOut w zależności od tego, czy parametr jest parametrem wejściowym, wyjściowym lub wejściowym/wyjściowym.
MaxLength Nie. Maksymalna długość parametru.
Precyzja Nie. Precyzja parametru.
Skaluj Nie. Skala parametru.
SRID Nie. Identyfikator odwołania systemu przestrzennego. Prawidłowe tylko dla parametrów typów przestrzennych. Aby uzyskać więcej informacji, zobacz SRID i SRID (SQL Server).

Uwaga

Do elementu Parametr można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element funkcji , który ma dwa elementy parametrów , które określają parametry wejściowe:

 <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, element (SSDL)

Element Principal w języku definicji schematu magazynu (SSDL) jest elementem podrzędnym elementu ReferentialConstraint, który definiuje główny koniec ograniczenia klucza obcego (nazywany również ograniczeniem odwołania). Element Principal określa kolumnę klucza podstawowego (lub kolumny) w tabeli, do którego odwołuje się inna kolumna (lub kolumny). Elementy PropertyRef określają, do których kolumn są przywoływanych. Element Zależny określa kolumny odwołujące się do kolumn klucza podstawowego, które są określone w elemencie Principal .

Element Principal może zawierać następujące elementy podrzędne (w podanej kolejności):

  • PropertyRef (co najmniej jeden)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Principal .

Nazwa atrybutu Jest wymagany Wartość
Rola Tak Ta sama wartość co atrybut roli (jeśli jest używany) odpowiadającego mu elementu End. W przeciwnym razie nazwa tabeli, która zawiera przywoływana kolumna.

Uwaga

Do elementu Principal można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element skojarzenia, który używa elementu ReferentialConstraint do określania kolumn uczestniczących w FK_CustomerOrders ograniczenia klucza obcego. Element Principal określa kolumnę CustomerId tabeli Customer (CustomerId) jako główny koniec ograniczenia.

 <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, element (SSDL)

Element Property w języku definicji schematu magazynu (SSDL) reprezentuje kolumnę w tabeli w bazowej bazie danych. Elementy właściwości to elementy podrzędne elementów EntityType, które reprezentują wiersze w tabeli. Każdy element Właściwości zdefiniowany w elemencji EntityType reprezentuje kolumnę.

Element Właściwości nie może mieć żadnych elementów podrzędnych.

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Property .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa odpowiedniej kolumny.
Type Tak Typ odpowiedniej kolumny.
Nullable Nie. Prawda (wartość domyślna) lub Fałsz w zależności od tego, czy odpowiednia kolumna może mieć wartość null.
DefaultValue Nie. Wartość domyślna odpowiadającej kolumny.
MaxLength Nie. Maksymalna długość odpowiedniej kolumny.
FixedLength Nie. True lub False w zależności od tego, czy odpowiadająca wartość kolumny będzie przechowywana jako ciąg o stałej długości.
Precyzja Nie. Precyzja odpowiedniej kolumny.
Skaluj Nie. Skala odpowiedniej kolumny.
Unicode Nie. True lub False w zależności od tego, czy odpowiadająca mu wartość kolumny będzie przechowywana jako ciąg Unicode.
Sortowanie Nie. Ciąg określający sekwencję sortowania, która ma być używana w źródle danych.
SRID Nie. Identyfikator odwołania systemu przestrzennego. Prawidłowe tylko dla właściwości typów przestrzennych. Aby uzyskać więcej informacji, zobacz SRID i SRID (SQL Server).
StoreGeneratedPattern Nie. Brak, tożsamość (jeśli odpowiadająca wartość kolumny jest tożsamością wygenerowaną w bazie danych) lub Obliczona (jeśli odpowiednia wartość kolumny jest obliczana w bazie danych). Nieprawidłowa dla właściwości RowType.

Uwaga

Do elementu Property można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie przedstawiono element EntityType z dwoma elementami właściwości podrzędnej:

 <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, element (SSDL)

Element PropertyRef w magazynie języka definicji schematu (SSDL) odwołuje się do właściwości zdefiniowanej w elemencie EntityType, aby wskazać, że właściwość będzie wykonywać jedną z następujących ról:

  • Być częścią klucza podstawowego tabeli, którą reprezentuje EntityType . Co najmniej jeden element PropertyRef może służyć do definiowania klucza podstawowego. Aby uzyskać więcej informacji, zobacz Element klucza.
  • Być zależnym lub głównym końcem ograniczenia odwołań. Aby uzyskać więcej informacji, zobacz ReferentialConstraint, element.

Element PropertyRef może mieć tylko następujące elementy podrzędne:

  • Dokumentacja (zero lub jedna)
  • Elementy adnotacji

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu PropertyRef .

Nazwa atrybutu Jest wymagany Wartość
Nazwa/nazwisko Tak Nazwa właściwości, do których odwołuje się odwołanie.

Uwaga

Do elementu PropertyRef można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla języka CSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie pokazano element PropertyRef używany do definiowania klucza podstawowego, odwołując się do właściwości zdefiniowanej w elemencie 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>

ReferentialConstraint, element (SSDL)

Element ReferentialConstraint w języku definicji schematu magazynu (SSDL) reprezentuje ograniczenie klucza obcego (nazywane również ograniczeniem integralności referencyjnej) w bazowej bazie danych. Główne i zależne końce ograniczenia są określane odpowiednio przez elementy podrzędne Principal i Dependent. Kolumny, które uczestniczą w jednostki i zależnych końcach, są przywoływanych z elementami PropertyRef.

Element ReferentialConstraint jest opcjonalnym elementem podrzędnym elementu Skojarzenie. Jeśli element ReferentialConstraint nie jest używany do mapowania ograniczenia klucza obcego określonego w elemecie Skojarzenie, należy użyć elementu AssociationSetMapping, aby to zrobić.

Element ReferentialConstraint może mieć następujące elementy podrzędne:

  • Dokumentacja (zero lub jedna)
  • Podmiot zabezpieczeń (dokładnie jeden)
  • Zależne (dokładnie jedno)
  • Elementy adnotacji (zero lub więcej)

Odpowiednie atrybuty

Do elementu ReferentialConstraint można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie pokazano element skojarzenia , który używa elementu ReferentialConstraint do określania kolumn uczestniczących w ograniczeniu klucza obcego FK_CustomerOrders :

 <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, element (SSDL)

Element ReturnType w magazynie języka definicji schematu (SSDL) określa typ zwracany dla funkcji, która jest zdefiniowana w elemecie Function . Typ zwracany funkcji można również określić za pomocą atrybutu ReturnType .

Zwracany typ funkcji jest określany za pomocą atrybutu Type lub elementu ReturnType .

Element ReturnType może mieć następujące elementy podrzędne:

  • CollectionType (jeden)

Uwaga

Do elementu ReturnType można zastosować dowolną liczbę atrybutów adnotacji (atrybuty niestandardowe XML). Jednak atrybuty niestandardowe mogą nie należeć do żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL. W pełni kwalifikowane nazwy dla dwóch atrybutów niestandardowych nie mogą być takie same.

Przykład

W poniższym przykładzie użyto funkcji zwracającej kolekcję wierszy.

   <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, element (SSDL)

Element RowType w języku definicji schematu magazynu (SSDL) definiuje nienazwaną strukturę jako typ zwracany dla funkcji zdefiniowanej w magazynie.

Element RowType jest elementem podrzędnym elementu CollectionType:

Element RowType może mieć następujące elementy podrzędne:

  • Właściwość (co najmniej jedna)

Przykład

W poniższym przykładzie pokazano funkcję magazynu, która używa elementu CollectionType, aby określić, że funkcja zwraca kolekcję wierszy (jak określono w elemecie 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>

Schema, element (SSDL)

Element Schemat w języku definicji schematu magazynu (SSDL) jest elementem głównym definicji modelu magazynu. Zawiera definicje obiektów, funkcji i kontenerów tworzących model magazynu.

Element Schemat może zawierać zero lub więcej z następujących elementów podrzędnych:

  • Skojarzenie
  • Typ jednostki
  • EntityContainer
  • Function

Element Schemat używa atrybutu Przestrzeń nazw do definiowania przestrzeni nazw dla typu jednostki i obiektów skojarzenia w modelu magazynu. W przestrzeni nazw żadne dwa obiekty nie mogą mieć takiej samej nazwy.

Przestrzeń nazw modelu magazynu różni się od przestrzeni nazw XML elementu Schemat . Przestrzeń nazw modelu magazynu (zdefiniowana przez atrybut Przestrzeni nazw ) jest kontenerem logicznym dla typów jednostek i typów skojarzeń. Przestrzeń nazw XML (wskazywana przez atrybut xmlns ) elementu Schemat jest domyślną przestrzenią nazw dla elementów podrzędnych i atrybutów elementu Schemat . Przestrzenie nazw XML formularza https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (gdzie RRRR i MM reprezentują odpowiednio rok i miesiąc) są zarezerwowane dla dysków SSDL. Elementy niestandardowe i atrybuty nie mogą znajdować się w przestrzeniach nazw, które mają ten formularz.

Odpowiednie atrybuty

W poniższej tabeli opisano atrybuty, które można zastosować do elementu Schemat .

Nazwa atrybutu Jest wymagany Wartość
Przestrzeń nazw Tak Przestrzeń nazw modelu magazynu. Wartość atrybutu przestrzeń nazw jest używana do utworzenia w pełni kwalifikowanej nazwy typu. Jeśli na przykład jednostka EntityType o nazwie Customer znajduje się w ExampleModel.Store przestrzeni nazw, w pełni kwalifikowana nazwa EntityType to ExampleModel.Store.Customer.
Następujące ciągi nie mogą być używane jako wartość atrybutu Przestrzeń nazw : System, Przejściowy lub Edm. Wartość atrybutu Przestrzeni nazw nie może być taka sama jak wartość atrybutu Przestrzeni nazw w elemecie schematu CSDL.
Alias Nie. Identyfikator używany zamiast nazwy przestrzeni nazw. Jeśli na przykład typ EntityType o nazwie Customer znajduje się w ExampleModel.Store przestrzeni nazw, a wartość atrybutu Alias to StorageModel, możesz użyć klasy StorageModel.Customer jako w pełni kwalifikowanej nazwy EntityType.
Dostawca Tak Dostawca danych.
ProviderManifestToken Tak Token wskazujący dostawcę, który manifest dostawcy ma być zwracany. Nie zdefiniowano formatu tokenu. Wartości tokenu są definiowane przez dostawcę. Aby uzyskać informacje na temat tokenów manifestu dostawcy programu SQL Server, zobacz SqlClient for Entity Framework.

Przykład

W poniższym przykładzie przedstawiono element Schemat zawierający element EntityContainer , dwa elementy EntityType i jeden element skojarzenia .

 <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>

Atrybuty adnotacji

Atrybuty adnotacji w języku definicji schematu magazynu (SSDL) to niestandardowe atrybuty XML w modelu magazynu, które zapewniają dodatkowe metadane dotyczące elementów w modelu magazynu. Oprócz prawidłowej struktury XML następujące ograniczenia dotyczą atrybutów adnotacji:

  • Atrybuty adnotacji nie mogą znajdować się w żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL.
  • W pełni kwalifikowane nazwy wszystkich dwóch atrybutów adnotacji nie mogą być takie same.

Do danego elementu SSDL można zastosować więcej niż jeden atrybut adnotacji. Dostęp do metadanych zawartych w elementach adnotacji można uzyskać w czasie wykonywania przy użyciu klas w przestrzeni nazw System.Data.Metadata.Edm.

Przykład

W poniższym przykładzie pokazano element EntityType, który ma atrybut adnotacji zastosowany do właściwości OrderId . W przykładzie pokazano również element adnotacji dodany do elementu 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>

Elementy adnotacji (SSDL)

Elementy adnotacji w języku definicji schematu magazynu (SSDL) to niestandardowe elementy XML w modelu magazynu, które zapewniają dodatkowe metadane dotyczące modelu magazynu. Oprócz prawidłowej struktury XML następujące ograniczenia dotyczą elementów adnotacji:

  • Elementy adnotacji nie mogą znajdować się w żadnej przestrzeni nazw XML zarezerwowanej dla dysków SSDL.
  • W pełni kwalifikowane nazwy wszystkich dwóch elementów adnotacji nie mogą być takie same.
  • Elementy adnotacji muszą pojawić się po wszystkich innych elementach podrzędnych danego elementu SSDL.

Więcej niż jeden element adnotacji może być elementem podrzędnym danego elementu SSDL. Począwszy od programu .NET Framework w wersji 4, metadane zawarte w elementach adnotacji mogą być dostępne w czasie wykonywania przy użyciu klas w przestrzeni nazw System.Data.Metadata.Edm.

Przykład

W poniższym przykładzie przedstawiono element EntityType z elementem adnotacji (CustomElement). W przykładzie przedstawiono również atrybut adnotacji zastosowany do właściwości 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>

Aspekty (SSDL)

Aspekty w języku definicji schematu magazynu (SSDL) reprezentują ograniczenia typów kolumn określonych w elementach właściwości. Aspekty są implementowane jako atrybuty XML w elementach właściwości .

W poniższej tabeli opisano aspekty obsługiwane w programie SSDL:

Faseta opis
Sortowanie Określa sekwencję sortowania (lub sekwencję sortowania), która ma być używana podczas wykonywania operacji porównywania i porządkowania wartości właściwości.
FixedLength Określa, czy długość wartości kolumny może się różnić.
MaxLength Określa maksymalną długość wartości kolumny.
Precyzja W przypadku właściwości typu Decimal określa liczbę cyfr, które może mieć wartość właściwości. Dla właściwości typu Time, DateTime i DateTimeOffset określa liczbę cyfr dla części ułamkowej sekund wartości kolumny.
Skaluj Określa liczbę cyfr po prawej stronie punktu dziesiętnego dla wartości kolumny.
Unicode Wskazuje, czy wartość kolumny jest przechowywana jako Unicode.