Specifikace CSDL

Poznámka:

CSDL v1 není podporován, aktualizujte prosím na V3.

Jazyk CSDL (Conceptual schema definition Language) je jazyk založený na jazyce XML, který popisuje entity, relace a funkce, které tvoří koncepční model aplikace řízené daty. Tento koncepční model může používat Entity Framework nebo Datové služby WCF. Metadata, která jsou popsána pomocí CSDL, používá Entity Framework k mapování entit a relací, které jsou definovány v koncepčním modelu na zdroj dat. Další informace naleznete v tématu SPECIFIKACE SSDL a SPECIFIKACE MSL.

CSDL je implementace entity Data Model Entity Framework.

V aplikaci Entity Framework se koncepční metadata modelu načtou ze souboru .csdl (napsaného v CSDL) do instance System.Data.Metadata.Edm.EdmItemCollection a jsou přístupná pomocí metod ve třídě System.Data.Metadata.Edm.MetadataWorkspace. Entity Framework používá koncepční metadata modelu k překladu dotazů na koncepční model na příkazy specifické pro zdroj dat.

Ef Designer ukládá koncepční informace o modelu v souboru .edmx v době návrhu. V době sestavení nástroj EF Designer používá informace v souboru .edmx k vytvoření souboru .csdl, který vyžaduje Entity Framework za běhu.

Verze CSDL jsou diferencovány obory názvů XML.

Verze CSDL Obor názvů XML
CSDL v1 https://schemas.microsoft.com/ado/2006/04/edm
CSDL v2 https://schemas.microsoft.com/ado/2008/09/edm
CSDL v3 https://schemas.microsoft.com/ado/2009/11/edm

Association – element (CSDL)

Element Association definuje vztah mezi dvěma typy entit. Přidružení musí určovat typy entit, které jsou součástí relace, a možný počet typů entit na každém konci relace, což se označuje jako násobnost. Násobnost konce přidružení může mít hodnotu 1, nula nebo jednu (0,,1) nebo mnoho (*). Tyto informace jsou zadány ve dvou podřízených koncových elementech.

K instancím typů entit na jednom konci přidružení lze přistupovat prostřednictvím navigačních vlastností nebo cizích klíčů, pokud jsou vystavené u typu entity.

Instance přidružení v aplikaci představuje konkrétní přidružení mezi instancemi typů entit. Instance přidružení jsou logicky seskupeny v sadě přidružení.

Prvek Association může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Konec (přesně 2 prvky)
  • ReferentialConstraint (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Association .

Název atributu Je povinné Hodnota
Název Ano Název přidružení.

 

Poznámka:

U elementu Association lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Association element, který definuje přidružení CustomerOrders , pokud cizí klíče nebyly vystaveny u typů entit Customer a Order . Hodnoty násobnosti pro každý konec přidružení označují, že mnoho objednávek může být přidruženo k zákazníkovi, ale k objednávce může být přidruženo pouze jeden zákazník. Kromě toho OnDelete element označuje, že všechny objednávky, které souvisejí s konkrétním zákazníkem a byly načteny do ObjectContext, budou odstraněny, pokud je zákazník odstraněn.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
 </Association>

 

Následující příklad ukazuje Association element, který definuje přidružení CustomerOrders , když cizí klíče byly vystaveny u typů entit Customer a Order . U vystavených cizích klíčů se vztah mezi entitami spravuje pomocí elementu ReferentialConstraint . Odpovídající prvek AssociationSetMapping není nutný k mapování tohoto přidružení na zdroj dat.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" >
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
   <ReferentialConstraint>
        <Principal Role="Customer">
            <PropertyRef Name="Id" />
        </Principal>
        <Dependent Role="Order">
             <PropertyRef Name="CustomerId" />
         </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

AssociationSet – element (CSDL)

Element AssociationSet v koncepčním jazyce definice schématu (CSDL) je logický kontejner pro instance přidružení stejného typu. Sada přidružení poskytuje definici pro seskupení instancí přidružení, aby je bylo možné mapovat na zdroj dat.  

Element AssociationSet může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (povolená nula nebo jeden prvek)
  • End (přesně dva požadované prvky)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Atribut Association určuje typ přidružení, které sada přidružení obsahuje. Sady entit, které tvoří konce sady přidružení, jsou určeny přesně dvěma podřízenými koncovými prvky.

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu AssociationSet .

Název atributu Je povinné Hodnota
Název Ano Název sady entit. Hodnota atributu Name nemůže být stejná jako hodnota atributu Association .
Sdružení Ano Plně kvalifikovaný název přidružení, pro které sada přidružení obsahuje instance. Přidružení musí být ve stejném oboru názvů jako sada přidružení.

 

Poznámka:

U elementu AssociationSet lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Element EntityContainer se dvěma elementy AssociationSet :

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

CollectionType – element (CSDL)

Element CollectionType v koncepčním jazyce definice schématu (CSDL) určuje, že parametr funkce nebo návratový typ funkce je kolekce. Element CollectionType může být podřízeným elementem Parameter nebo ReturnType (Function). Typ kolekce lze zadat pomocí atributu Type nebo některého z následujících podřízených prvků:

  • CollectionType
  • ReferenceType
  • Typ řádku
  • TypeRef

Poznámka:

Model se neověří, pokud je typ kolekce zadán pomocí atributu Type i podřízeného prvku.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro CollectionType element. Všimněte si, že atributy DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode a Collation se vztahují pouze na kolekce EDMSimpleTypes.

Název atributu Je povinné Hodnota
Typ No Typ kolekce
Nullable No True (výchozí hodnota) nebo False v závislosti na tom, zda vlastnost může mít hodnotu null.
[!POZNÁMKA]
> V CSDL v1 musí mít Nullable="False"vlastnost komplexního typu .
DefaultValue No Výchozí hodnota vlastnosti.
MaxLength No Maximální délka hodnoty vlastnosti.
Pevná délka No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec s pevnou délkou.
Přesnost No Přesnost hodnoty vlastnosti.
Měřítko No Měřítko hodnoty vlastnosti.
SRID No Referenční identifikátor prostorového systému Platné pouze pro vlastnosti prostorových typů.   Další informace najdete v tématu SRID a SRID (SQL Server)
Unicode No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec Unicode.
Kolace No Řetězec, který určuje kompletující sekvenci, která se má použít ve zdroji dat.

 

Poznámka:

U elementu CollectionType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje modelem definovanou funkci, která používá CollectionType element k určení, že funkce vrací kolekci person typů entit (jak je zadáno pomocí elementType atributu).

 <Function Name="LastNamesAfter">
        <Parameter Name="someString" Type="Edm.String"/>
        <ReturnType>
             <CollectionType  ElementType="SchoolModel.Person"/>
        </ReturnType>
        <DefiningExpression>
             SELECT VALUE p
             FROM SchoolEntities.People AS p
             WHERE p.LastName >= someString
        </DefiningExpression>
 </Function>

 

Následující příklad ukazuje modelem definovanou funkci, která používá CollectionType element k určení, že funkce vrací kolekci řádků (jak je uvedeno v RowType elementu).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

Následující příklad ukazuje modelem definovanou funkci, která používá CollectionType element určit, že funkce přijímá jako parametr kolekci typů entit Oddělení .

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

ComplexType – element (CSDL)

Element ComplexType definuje datovou strukturu složenou z vlastností EdmSimpleType nebo jiných komplexních typů.  Komplexní typ může být vlastností typu entity nebo jiného komplexního typu. Komplexní typ je podobný typu entity v tom, že komplexní typ definuje data. Mezi komplexními typy a typy entit však existují některé klíčové rozdíly:

  • Komplexní typy nemají identity (ani klíče), a proto nemohou existovat nezávisle. Komplexní typy mohou existovat pouze jako vlastnosti typů entit nebo jiných komplexních typů.
  • Komplexní typy se nemohou účastnit přidružení. Ani konec přidružení nemůže být složitým typem, a proto nelze definovat navigační vlastnosti pro komplexní typy.
  • Vlastnost komplexního typu nemůže mít hodnotu null, i když skalární vlastnosti komplexního typu mohou být nastaveny na hodnotu null.

Element ComplexType může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Vlastnost (nula nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Následující tabulka popisuje atributy, které lze použít u elementu ComplexType .

Název atributu Je povinné Hodnota
Name Ano Název komplexního typu. Název komplexního typu nemůže být stejný jako název jiného komplexního typu, typu entity nebo přidružení, které je v oboru modelu.
BaseType No Název jiného komplexního typu, který je základním typem komplexního typu, který je definován.
[!POZNÁMKA]
> Tento atribut není použitelný v CSDL v1. Dědičnost komplexních typů není v této verzi podporována.
Shrnutí No Pravda nebo Nepravda (výchozí hodnota) v závislosti na tom, jestli je komplexní typ abstraktním typem.
[!POZNÁMKA]
> Tento atribut není použitelný v CSDL v1. Komplexní typy v této verzi nemohou být abstraktní typy.

 

Poznámka:

U elementu ComplexType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje komplexní typ, Address, with the EdmSimpleType properties StreetAddress, City, StateOrProvince, Country a PostalCode.

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

Chcete-li definovat komplexní typ Address (výše) jako vlastnost typu entity, musíte deklarovat typ vlastnosti v definici typu entity. Následující příklad ukazuje vlastnost Address jako komplexní typ u typu entity (Publisher):

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BooksModel.Address" Name="Address" Nullable="false" />
       <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                           FromRole="Publisher" ToRole="Book" />
     </EntityType>

 

 

DefiningExpression – element (CSDL)

Element DefineExpression v koncepčním jazyce definice schématu (CSDL) obsahuje výraz Entity SQL, který definuje funkci v konceptuálním modelu.  

Poznámka:

Pro účely ověřování může element DefiningExpression obsahovat libovolný obsah. Entity Framework však vyvolá výjimku za běhu, pokud prvek DefiningExpression neobsahuje platný Entity SQL.

 

Použitelné atributy

Na element DefiningExpression lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

Příklad

Následující příklad používá DefineExpression element definovat funkci, která vrací počet roků od publikování knihy. Obsah elementu DefiningExpression je zapsán v Entity SQL.

 <Function Name="GetYearsInPrint" ReturnType="Edm.Int32" >
       <Parameter Name="book" Type="BooksModel.Book" />
       <DefiningExpression>
         Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
       </DefiningExpression>
     </Function>

 

 

Závislý element (CSDL)

Element Dependent v konceptuální jazyk definice schématu (CSDL) je podřízený prvek ReferentialConstraint element a definuje závislý konec referenčního omezení. Element ReferentialConstraint definuje funkce, které se podobaly omezení referenční integrity v relační databázi. Stejně jako sloupec (nebo sloupce) z tabulky databáze může odkazovat na primární klíč jiné tabulky, vlastnost (nebo vlastnosti) typu entity může odkazovat na klíč entity jiného typu entity. Typ entity, na který se odkazuje, se nazývá hlavní konec omezení. Typ entity, který odkazuje na konec objektu zabezpečení, se nazývá závislý konec omezení. Elementy PropertyRef slouží k určení, které klíče odkazují na konec objektu zabezpečení.

Závislý prvek může mít následující podřízené prvky (v uvedeném pořadí):

  • PropertyRef (jeden nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro závislý prvek.

Název atributu Je povinné Hodnota
Role Ano Název typu entity na závislém konci přidružení.

 

Poznámka:

U závislého prvku lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje ReferentialConstraint element, který se používá jako součást definice PublishedBy asociace. Vlastnost PublisherId typu entity Knihy tvoří závislý konec referenčního omezení.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Element dokumentace (CSDL)

Element Dokumentace v konceptuální jazyk definice schématu (CSDL) lze použít k poskytnutí informací o objektu, který je definován v nadřazený element. Pokud je prvek Dokumentace v souboru .edmx podřízeným prvkem prvku, který se zobrazí jako objekt na návrhové ploše návrháře EF (například entita, přidružení nebo vlastnost), obsah prvku Dokumentace se zobrazí v okně Vlastnosti sady Visual Studio objektu.

Prvek dokumentace může mít následující podřízené prvky (v uvedeném pořadí):

  • Shrnutí: Stručný popis nadřazeného prvku. (nula nebo jeden prvek)
  • LongDescription: Rozsáhlý popis nadřazeného prvku. (nula nebo jeden prvek)
  • Prvky poznámek. (nula nebo více prvků)

Použitelné atributy

U elementu Documentation lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

Příklad

Následující příklad ukazuje Element Documentation jako podřízený prvek EntityType elementu. Pokud by následující fragment kódu byl v obsahu csDL souboru .edmx, obsah elementů Souhrn a LongDescription se zobrazí v okně Vlastnosti sady Visual Studio, když kliknete na Customer typ entity.

 <EntityType Name="Customer">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Type="Int32" Name="CustomerId" Nullable="false" />
    <Property Type="String" Name="Name" Nullable="false" />
 </EntityType>

 

 

End – element (CSDL)

End element v konceptuální jazyk definice schématu (CSDL) může být podřízeným elementem Association nebo AssociationSet elementu. V každém případě se role koncového prvku liší a příslušné atributy se liší.

End – element jako podřízený prvek association

Koncový prvek (jako podřízený prvek Association) identifikuje typ entity na jednom konci přidružení a počet instancí typu entity, které mohou existovat na tomto konci přidružení. Konce přidružení jsou definovány jako součást přidružení; přidružení musí mít přesně dva konce přidružení. Instance typu entity na jednom konci přidružení lze získat přístup prostřednictvím navigačních vlastností nebo cizích klíčů, pokud jsou vystaveny u typu entity.  

Koncový prvek může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • OnDelete (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u end elementu, když je podřízeným prvkem Association.

Název atributu Je povinné Hodnota
Typ Ano Název typu entity na jednom konci přidružení.
Role No Název konce přidružení. Pokud není zadaný žádný název, použije se název typu entity na konci přidružení.
Násobnost Ano 1, 0..1 nebo * v závislosti na počtu instancí typu entity, které mohou být na konci přidružení.
1 označuje, že na konci přidružení existuje přesně jedna instance typu entity.
0..1 označuje, že na konci přidružení existují nulové instance nebo jedna instance typu entity.
* označuje, že na konci přidružení existují nula, jedna nebo více instancí typu entity.

 

Poznámka:

U elementu End lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Association element, který definuje CustomerOrders přidružení. Hodnoty násobnosti pro každý konec přidružení označují, že mnoho objednávek může být přidruženo k zákazníkovi, ale k objednávce může být přidruženo pouze jeden zákazník. Kromě toho OnDelete element označuje, že všechny objednávky, které souvisejí s konkrétním zákazníkem a které byly načteny do ObjectContext, budou odstraněny, pokud je zákazník odstraněn.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1" />
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*">
         <OnDelete Action="Cascade" />
   </End>
 </Association>

 

End – element jako podřízený prvek AssociationSet

End element určuje jeden konec asociační sady. Element AssociationSet musí obsahovat dva koncové elementy. Informace obsažené v koncovém prvku se používají při mapování asociační sady na zdroj dat.

Koncový prvek může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Poznámka:

Prvky poznámek musí být uvedeny za všemi ostatními podřízenými prvky. Prvky poznámek jsou povoleny pouze v CSDL v2 a novějších.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u end elementu, když je podřízeným prvkem AssociationSet.

Název atributu Je povinné Hodnota
Sada entit Ano Název elementu EntitySet , který definuje jeden konec nadřazeného elementu AssociationSet . Element EntitySet musí být definován ve stejném kontejneru entity jako nadřazený Element AssociationSet .
Role No Název sady přidružení končí. Pokud se atribut Role nepoužije, název konce sady přidružení bude název sady entit.

 

Poznámka:

U elementu End lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Element EntityContainer se dvěma elementy AssociationSet , každý se dvěma koncovými prvky:

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntityContainer – element (CSDL)

Element EntityContainer v jazyce csDL (Conceptual Schema Definition Language) je logický kontejner pro sady entit, sady přidružení a import funkcí. Kontejner entit konceptu modelu se mapuje na kontejner entity modelu úložiště prostřednictvím elementu EntityContainerMapping. Kontejner entit modelu úložiště popisuje strukturu databáze: sady entit popisují tabulky, sady přidružení popisují omezení cizího klíče a importy funkcí popisují uložené procedury v databázi.

Element EntityContainer může mít nula nebo jeden prvek dokumentace. Pokud je k dispozici prvek dokumentace, musí předcházet všem prvkům EntitySet, AssociationSet a FunctionImport.

Element EntityContainer může mít nula nebo více následujících podřízených elementů (v uvedeném pořadí):

  • Sada entit
  • Sada přidružení
  • FunctionImport
  • Prvky poznámek

Element EntityContainer můžete rozšířit tak, aby zahrnoval obsah jiné EntityContainer, který je v rámci stejného oboru názvů. Chcete-li zahrnout obsah jiné EntityContainer, v odkazující EntityContainer element, nastavte hodnotu Extends atribut na název EntityContainer element, který chcete zahrnout. Všechny podřízené prvky zahrnuté EntityContainer elementu budou považovány za podřízené prvky odkazující EntityContainer elementu.

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u prvku Using .

Název atributu Je povinné Hodnota
Název Ano Název kontejneru entity.
Rozšiřuje No Název jiného kontejneru entit v rámci stejného oboru názvů

 

Poznámka:

U elementu EntityContainer lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje EntityContainer element, který definuje tři sady entit a dvě asociační sady.

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntitySet – element (CSDL)

Element EntitySet v koncepčním jazyku definice schématu je logický kontejner pro instance typu entity a instance libovolného typu odvozeného z tohoto typu entity. Relace mezi typem entity a sadou entit je podobná relaci mezi řádkem a tabulkou v relační databázi. Podobně jako řádek definuje typ entity sadu souvisejících dat a podobně jako tabulka sada entit obsahuje instance této definice. Sada entit poskytuje konstruktor pro seskupení instancí typu entity, aby je bylo možné mapovat na související datové struktury ve zdroji dat.  

Může být definováno více než jedna sada entit pro konkrétní typ entity.

Poznámka:

Ef Designer nepodporuje koncepční modely, které obsahují více sad entit na typ.

 

Element EntitySet může mít následující podřízené elementy (v uvedeném pořadí):

  • Element dokumentace (je povolený žádný nebo jeden prvek)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu EntitySet .

Název atributu Je povinné Hodnota
Název Ano Název sady entit.
EntityType Ano Plně kvalifikovaný název typu entity, pro který sada entit obsahuje instance.

 

Poznámka:

U elementu EntitySet lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Element EntityContainer se třemi elementy EntitySet :

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

Je možné definovat více sad entit na typ (MEST). Následující příklad definuje kontejner entity se dvěma sadami entit pro typ entity Book :

 <EntityContainer Name="BooksContainer" >
   <EntitySet Name="Books" EntityType="BooksModel.Book" />
   <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
   <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
   <EntitySet Name="Authors" EntityType="BooksModel.Author" />
   <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
     <End Role="Book" EntitySet="Books" />
     <End Role="Publisher" EntitySet="Publishers" />
   </AssociationSet>
   <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
     <End Role="Book" EntitySet="Books" />
     <End Role="Author" EntitySet="Authors" />
   </AssociationSet>
 </EntityContainer>

 

 

EntityType – element (CSDL)

Element EntityType představuje strukturu konceptu nejvyšší úrovně, například zákazníka nebo pořadí, v konceptuálním modelu. Typ entity je šablona pro instance typů entit v aplikaci. Každá šablona obsahuje následující informace:

  • Jedinečný název. (Povinné.)
  • Klíč entity definovaný jednou nebo více vlastnostmi. (Povinné.)
  • Vlastnosti obsahující data (Volitelné.)
  • Navigační vlastnosti, které umožňují navigaci z jednoho konce přidružení na druhý konec. (Volitelné.)

Instance typu entity v aplikaci představuje konkrétní objekt (například konkrétního zákazníka nebo objednávku). Každá instance typu entity musí mít jedinečný klíč entity v rámci sady entit.

Dvě instance typu entity se považují za stejné pouze v případě, že jsou stejného typu a hodnoty jejich klíčů entity jsou stejné.

Element EntityType může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Klíč (nula nebo jeden prvek)
  • Vlastnost (nula nebo více prvků)
  • NavigationProperty (nula nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu EntityType .

Název atributu Je povinné Hodnota
Název Ano Název typu entity.
BaseType No Název jiného typu entity, který je základním typem definovaného typu entity.
Shrnutí No Pravda nebo Nepravda v závislosti na tom, jestli je typ entity abstraktním typem.
OpenType No Pravda nebo Nepravda v závislosti na tom, jestli je typ entity otevřeným typem entity.
[!POZNÁMKA]
> Atribut OpenType se vztahuje pouze na typy entit, které jsou definovány v koncepčních modelech, které se používají s ADO.NET Data Services.

 

Poznámka:

U elementu EntityType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje EntityType element se třemi elementy Property a dva NavigationProperty elementy :

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

EnumType – element (CSDL)

EnumType element představuje výčtový typ.

Element EnumType může mít následující podřízené elementy (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Člen (nula nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro EnumType element.

Název atributu Je povinné Hodnota
Název Ano Název typu entity.
IsFlags No Pravda nebo Nepravda, v závislosti na tom, zda lze typ výčtu použít jako sadu příznaků. Výchozí hodnota je False..
Základní typ No Edm.Byte, Edm.Int16, Edm.Int32, Edm.Int64 nebo Edm.SByte definující rozsah hodnot typu.   Výchozí základní typ prvků výčtu je Edm.Int32..

 

Poznámka:

U elementu EnumType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje element EnumType se třemi member elementy:

 <EnumType Name="Color" IsFlags=”false” UnderlyingTyp=”Edm.Byte”>
   <Member Name="Red" />
   <Member Name="Green" />
   <Member Name="Blue" />
 </EntityType>

 

 

Function – element (CSDL)

Element Function v jazyce CSDL (Conceptual Schema Definition Language) slouží k definování nebo deklaraci funkcí v koncepčním modelu. Funkce je definována pomocí DefinedExpression elementu.  

Prvek funkce může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Parametr (nula nebo více prvků)
  • DefiningExpression (nula nebo jeden prvek)
  • ReturnType (funkce) (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Návratový typ funkce musí být zadán buď pomocí returnType (Function) elementu, nebo returnType atributu (viz níže), ale ne obojí. Možné návratové typy jsou všechny typy EdmSimpleType, typ entity, komplexní typ, typ řádku nebo typ odkazu (nebo kolekce jednoho z těchto typů).

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro prvek Function .

Název atributu Je povinné Hodnota
Název Ano Název funkce.
ReturnType No Typ vrácený funkcí.

 

Poznámka:

U elementu Function lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad používá prvek Function k definování funkce, která vrací počet let od přijetí instruktora.

 <Function Name="YearsSince" ReturnType="Edm.Int32">
   <Parameter Name="date" Type="Edm.DateTime" />
   <DefiningExpression>
     Year(CurrentDateTime()) - Year(date)
   </DefiningExpression>
 </Function>

 

 

FunctionImport – element (CSDL)

Element FunctionImport v konceptuálním jazyku definice schématu (CSDL) představuje funkci, která je definována ve zdroji dat, ale je k dispozici pro objekty prostřednictvím konceptuálního modelu. Například prvek funkce v modelu úložiště lze použít k reprezentaci uložené procedury v databázi. Prvek FunctionImport v konceptuálním modelu představuje odpovídající funkci v aplikaci Entity Framework a je mapován na funkci modelu úložiště pomocí FunctionImportMapping elementu. Když je funkce volána v aplikaci, odpovídající uložená procedura se spustí v databázi.

Element FunctionImport může mít následující podřízené elementy (v uvedeném pořadí):

  • Dokumentace (povolená nula nebo jeden prvek)
  • Parametr (povolen nula nebo více prvků)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)
  • ReturnType (FunctionImport) (povolena nula nebo více elementů)

Pro každý parametr, který funkce přijímá, by měl být definován jeden element Parameter .

Návratový typ funkce musí být zadán buď pomocí returnType (FunctionImport) elementu nebo ReturnType atributu (viz níže), ale ne obojí. Návratová hodnota typu musí být kolekce EdmSimpleType, EntityType nebo ComplexType.

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu FunctionImport .

Název atributu Je povinné Hodnota
Název Ano Název importované funkce.
ReturnType No Typ, který funkce vrátí. Tento atribut nepoužívejte, pokud funkce nevrací hodnotu. V opačném případě musí být hodnota kolekce ComplexType, EntityType nebo EDMSimpleType.
Sada entit No Pokud funkce vrátí kolekci typů entit, hodnota EntitySet musí být entita, do které kolekce patří. V opačném případě nesmí být použit atribut EntitySet.
IsComposable No Pokud je hodnota nastavena na hodnotu true, je funkce kompozovatelná (funkce s hodnotou tabulky) a lze ji použít v dotazu LINQ.  Výchozí hodnota je false.

 

Poznámka:

U elementu FunctionImport lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje element FunctionImport , který přijímá jeden parametr a vrací kolekci typů entit:

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

 

Key – element (CSDL)

Key element je podřízený prvek EntityType elementu a definuje klíč entity (vlastnost nebo sadu vlastností typu entity, které určují identitu). Vlastnosti, které tvoří klíč entity, jsou vybrány v době návrhu. Hodnoty vlastností klíče entity musí jednoznačně identifikovat instanci typu entity v rámci entity nastavené za běhu. Vlastnosti, které tvoří klíč entity, by měly být zvoleny k zajištění jedinečnosti instancí v sadě entit. Element Key definuje klíč entity odkazem na jednu nebo více vlastností typu entity.

Element Key může mít následující podřízené prvky:

  • PropertyRef (jeden nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

U elementu Key lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

Příklad

Následující příklad definuje typ entity s názvem Book. Klíč entity je definován odkazem na vlastnost ISBN typu entity.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

Vlastnost ISBN je dobrou volbou pro klíč entity, protože číslo isBN (International Standard Book Number) jednoznačně identifikuje knihu.

Následující příklad ukazuje typ entity (Author), který má klíč entity, který se skládá ze dvou vlastností, Name a Address.

 <EntityType Name="Author">
   <Key>
     <PropertyRef Name="Name" />
     <PropertyRef Name="Address" />
   </Key>
   <Property Type="String" Name="Name" Nullable="false" />
   <Property Type="String" Name="Address" Nullable="false" />
   <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                       FromRole="Author" ToRole="Book" />
 </EntityType>

 

Použití názvu a adresy pro klíč entity je rozumnou volbou, protože dva autoři stejného názvu pravděpodobně nebudou žít na stejné adrese. Tato volba pro klíč entity však nezaručuje jedinečné klíče entit v sadě entit. V tomto případě se doporučuje přidat vlastnost, například AuthorId, která by se dala použít k jednoznačné identifikaci autora.

 

Member – element (CSDL)

Member element je podřízený prvek EnumType element a definuje člen výčtového typu.

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu FunctionImport .

Název atributu Je povinné Hodnota
Název Ano Název členu
Hodnota No Hodnota člena. Ve výchozím nastavení má první člen hodnotu 0 a hodnota každého následného výčtu se zvýší o 1. Může existovat více členů se stejnými hodnotami.

 

Poznámka:

U elementu FunctionImport lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje element EnumType se třemi member elementy:

 <EnumType Name="Color">
   <Member Name="Red" Value=”1”/>
   <Member Name="Green" Value=”3” />
   <Member Name="Blue" Value=”5”/>
 </EntityType>

 

 

A NavigationProperty element definuje navigační vlastnost, která poskytuje odkaz na druhý konec přidružení. Na rozdíl od vlastností definovaných pomocí elementu Property nedefinují vlastnosti navigace tvar a vlastnosti dat. Poskytují způsob, jak procházet přidružení mezi dvěma typy entit.

Všimněte si, že navigační vlastnosti jsou volitelné u obou typů entit na konci přidružení. Pokud definujete navigační vlastnost u jednoho typu entity na konci přidružení, nemusíte definovat navigační vlastnost u typu entity na druhém konci přidružení.

Datový typ vrácený navigační vlastností je určen násobností jeho vzdáleného přidružení konec. Předpokládejme například, že navigační vlastnost OrdersNavProp existuje u typu entity Zákazník a prochází přidružení 1:N mezi zákazníkem a objednávkou. Vzhledem k tomu, že konec vzdáleného přidružení pro navigační vlastnost má mnoho (*), jeho datový typ je kolekce (order). Podobně pokud vlastnost navigace CustomerNavProp existuje u typu entity Order, její datový typ by byl Customer, protože násobnost vzdáleného konce je jedna (1).

A NavigationProperty element může mít následující podřízené elementy (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro NavigationProperty element.

Název atributu Je povinné Hodnota
Název Ano Název navigační vlastnosti.
Vztah Ano Název přidružení, které je v rozsahu modelu.
ToRole Ano Konec přidružení, na kterém navigace končí. Hodnota atributu ToRole musí být stejná jako hodnota jednoho z atributů role definovaných na jednom z přidružení končí (definovaných v elementu AssociationEnd).
ZRole Ano Konec přidružení, ze kterého začíná navigace. Hodnota FromRole atributu musí být stejná jako hodnota jednoho z atributů role definovaných na jednom z asociační konce (definovaných v elementu AssociationEnd).

 

Poznámka:

U elementu NavigationProperty lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad definuje typ entity (Book) se dvěma navigačními vlastnostmi (PublishedBy a WrittenBy):

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

 

OnDelete – element (CSDL)

Element OnDelete v koncepčním jazyce definice schématu (CSDL) definuje chování, které je propojeno s přidružením. Pokud je atribut Action nastaven na kaskádu na jednom konci přidružení, související typy entit na druhém konci přidružení se odstraní při odstranění typu entity na prvním konci. Pokud je přidružení mezi dvěma typy entit vztah primárního klíče k primárnímu klíči, odstraní se načtený závislý objekt, když se hlavní objekt na druhém konci přidružení odstraní bez ohledu na specifikaci OnDelete .  

Poznámka:

Prvek OnDelete má vliv pouze na chování aplikace za běhu; nemá vliv na chování ve zdroji dat. Chování definované ve zdroji dat by mělo být stejné jako chování definované v aplikaci.

 

Element OnDelete může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu OnDelete .

Název atributu Je povinné Hodnota
Akce Ano Kaskádová nebo žádná. Pokud je kaskádová, po odstranění typu hlavní entity se odstraní závislé typy entit. Pokud žádné, závislé typy entit nebudou odstraněny při odstranění typu hlavní entity.

 

Poznámka:

U elementu Association lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Association element, který definuje CustomerOrders přidružení. OnDelete element označuje, že všechny objednávky, které souvisejí s konkrétním zákazníkem a byly načteny do ObjectContext budou odstraněny při odstranění zákazníka.

 <Association Name="CustomerOrders">
   <End Type="ExampleModel.Customer" Role="Customer" Multiplicity="1">
         <OnDelete Action="Cascade" />
   </End>
   <End Type="ExampleModel.Order" Role="Order" Multiplicity="*" />
 </Association>

 

 

Parameter – element (CSDL)

Element Parameter v konceptuální jazyk definice schématu (CSDL) může být podřízený element FunctionImport nebo Function element.

Aplikace elementu FunctionImport

Element Parameter (jako podřízený prvek FunctionImport ) slouží k definování vstupních a výstupních parametrů pro importy funkcí deklarované v CSDL.

Element Parameter může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (povolená nula nebo jeden prvek)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro element Parameter .

Název atributu Je povinné Hodnota
Název Ano Název parametru
Typ Ano Typ parametru. Hodnota musí být EDMSimpleType nebo komplexní typ, který je v oboru modelu.
Režim No In, Out nebo InOut v závislosti na tom, zda je parametr vstupní, výstupní nebo vstupní/výstupní parametr.
MaxLength No Maximální povolená délka parametru.
Přesnost No Přesnost parametru.
Měřítko No Měřítko parametru.
SRID No Referenční identifikátor prostorového systému Platné pouze pro parametry prostorových typů. Další informace naleznete v tématu SRID a SRID (SQL Server).

 

Poznámka:

U elementu Parameter lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje FunctionImport element s jedním podřízeným elementem Parameter . Funkce přijímá jeden vstupní parametr a vrací kolekci typů entit.

 <FunctionImport Name="GetStudentGrades"
                 EntitySet="StudentGrade"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
        <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

 

Aplikace elementu function

Element Parameter (jako podřízený prvek funkce ) definuje parametry pro funkce, které jsou definovány nebo deklarovány v konceptuálním modelu.

Element Parameter může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • CollectionType (nula nebo jeden prvek)
  • ReferenceType (nula nebo jeden prvek)
  • RowType (nula nebo jeden prvek)

Poznámka:

Podřízeným prvkem elementu Property může být pouze jeden z elementů CollectionType, ReferenceType nebo RowType.

 

  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Poznámka:

Prvky poznámek musí být uvedeny za všemi ostatními podřízenými prvky. Prvky poznámek jsou povoleny pouze v CSDL v2 a novějších.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro element Parameter .

Název atributu Je povinné Hodnota
Název Ano Název parametru
Typ No Typ parametru. Parametr může být libovolný z následujících typů (nebo kolekcí těchto typů):
EdmSimpleType
typ entity
komplexní typ
Typ řádku
odkazový typ
Nullable No True (výchozí hodnota) nebo False v závislosti na tom, zda vlastnost může mít hodnotu null .
DefaultValue No Výchozí hodnota vlastnosti.
MaxLength No Maximální délka hodnoty vlastnosti.
Pevná délka No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec s pevnou délkou.
Přesnost No Přesnost hodnoty vlastnosti.
Měřítko No Měřítko hodnoty vlastnosti.
SRID No Referenční identifikátor prostorového systému Platné pouze pro vlastnosti prostorových typů. Další informace naleznete v tématu SRID a SRID (SQL Server).
Unicode No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec Unicode.
Kolace No Řetězec, který určuje kompletující sekvenci, která se má použít ve zdroji dat.

 

Poznámka:

U elementu Parameter lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje function element, který používá jeden podřízený element Parameter k definování parametru funkce.

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
 <Parameter Name="Instructor" Type="SchoolModel.Person" />
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(Instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

Principal – element (CSDL)

Element Principal v konceptuální jazyk definice schématu (CSDL) je podřízený prvek ReferentialConstraint element, který definuje hlavní konec referenčního omezení. Element ReferentialConstraint definuje funkce, které se podobaly omezení referenční integrity v relační databázi. Stejně jako sloupec (nebo sloupce) z tabulky databáze může odkazovat na primární klíč jiné tabulky, vlastnost (nebo vlastnosti) typu entity může odkazovat na klíč entity jiného typu entity. Typ entity, na který se odkazuje, se nazývá hlavní konec omezení. Typ entity, který odkazuje na konec objektu zabezpečení, se nazývá závislý konec omezení. Elementy PropertyRef slouží k určení, na které klíče odkazuje závislý konec.

Element Principal může mít následující podřízené prvky (v uvedeném pořadí):

  • PropertyRef (jeden nebo více prvků)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Principal .

Název atributu Je povinné Hodnota
Role Ano Název typu entity na konci objektu zabezpečení přidružení.

 

Poznámka:

U elementu Principal lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje ReferentialConstraint element, který je součástí definice PublishedBy asociace. Vlastnost ID typu entity Publisher tvoří hlavní konec referenčního omezení.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Element vlastnosti (CSDL)

Element Property v koncepčním jazyku definice schématu (CSDL) může být podřízený Element EntityType, ComplexType element nebo RowType elementu.

EntityType a ComplexType – aplikace elementů

Prvky vlastnosti (jako podřízené položky Elementy EntityType nebo ComplexType ) definují tvar a vlastnosti dat, které bude obsahovat instance typu entity nebo komplexní instance typu. Vlastnosti v konceptuálním modelu jsou podobné vlastnostem definovaným ve třídě. Stejně jako vlastnosti třídy definují tvar třídy a přenášejí informace o objektech, vlastnosti v konceptuálním modelu definují tvar typu entity a přenášejí informace o instancích typu entity.

Element Property může mít následující podřízené prvky (v uvedeném pořadí):

  • Element dokumentace (je povolený žádný nebo jeden prvek)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Následující omezující vlastnosti lze použít u elementu Property: Nullable, DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, Collation, ConcurrencyMode. Omezující vlastnosti jsou atributy XML, které poskytují informace o tom, jak jsou hodnoty vlastností uloženy v úložišti dat.

Poznámka:

Omezující vlastnosti lze použít pouze u vlastností typu EDMSimpleType.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Property .

Název atributu Je povinné Hodnota
Název Ano Název vlastnosti
Typ Ano Typ hodnoty vlastnosti. Typ hodnoty vlastnosti musí být EDMSimpleType nebo komplexní typ (označený plně kvalifikovaným názvem), který je v rozsahu modelu.
Nullable No True (výchozí hodnota) nebo False v závislosti na tom, zda vlastnost může mít hodnotu null.
[!POZNÁMKA]
> V CSDL v1 musí mít Nullable="False"vlastnost komplexního typu .
DefaultValue No Výchozí hodnota vlastnosti.
MaxLength No Maximální délka hodnoty vlastnosti.
Pevná délka No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec s pevnou délkou.
Přesnost No Přesnost hodnoty vlastnosti.
Měřítko No Měřítko hodnoty vlastnosti.
SRID No Referenční identifikátor prostorového systému Platné pouze pro vlastnosti prostorových typů. Další informace naleznete v tématu SRID a SRID (SQL Server).
Unicode No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec Unicode.
Kolace No Řetězec, který určuje kompletující sekvenci, která se má použít ve zdroji dat.
ConcurrencyMode No Žádná (výchozí hodnota) nebo Pevná. Pokud je hodnota nastavena na Pevná, hodnota vlastnosti se použije v optimistických kontrolách souběžnosti.

 

Poznámka:

U elementu Property lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Element EntityType se třemi elementy Property :

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

Následující příklad ukazuje ComplexType element s pěti elementy Property :

 <ComplexType Name="Address" >
   <Property Type="String" Name="StreetAddress" Nullable="false" />
   <Property Type="String" Name="City" Nullable="false" />
   <Property Type="String" Name="StateOrProvince" Nullable="false" />
   <Property Type="String" Name="Country" Nullable="false" />
   <Property Type="String" Name="PostalCode" Nullable="false" />
 </ComplexType>

 

Aplikace elementu RowType

Prvky vlastností (jako podřízené položky elementu RowType ) definují tvar a vlastnosti dat, které lze předat nebo vrátit z modelem definované funkce.  

Element Property může mít přesně jeden z následujících podřízených prvků:

  • CollectionType
  • ReferenceType
  • Typ řádku

Element Property může mít libovolný počet podřízených anotačních prvků.

Poznámka:

Prvky poznámek jsou povoleny pouze v CSDL v2 a novějších.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Property .

Název atributu Je povinné Hodnota
Název Ano Název vlastnosti
Typ Ano Typ hodnoty vlastnosti.
Nullable No True (výchozí hodnota) nebo False v závislosti na tom, zda vlastnost může mít hodnotu null.
[!POZNÁMKA]
> V CSDL v1 komplexní typ vlastnost musí mít Nullable="False".
DefaultValue No Výchozí hodnota vlastnosti.
MaxLength No Maximální délka hodnoty vlastnosti.
Pevná délka No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec s pevnou délkou.
Přesnost No Přesnost hodnoty vlastnosti.
Měřítko No Měřítko hodnoty vlastnosti.
SRID No Referenční identifikátor prostorového systému Platné pouze pro vlastnosti prostorových typů. Další informace naleznete v tématu SRID a SRID (SQL Server).
Unicode No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec Unicode.
Kolace No Řetězec, který určuje kompletující sekvenci, která se má použít ve zdroji dat.

 

Poznámka:

U elementu Property lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje elementy vlastnosti , které slouží k definování tvaru návratového typu modelem definované funkce.

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

 

 

PropertyRef – element (CSDL)

Element PropertyRef v jazyce definic schématu (CSDL) odkazuje na vlastnost typu entity, která označuje, že vlastnost bude provádět jednu z následujících rolí:

  • Část klíče entity (vlastnost nebo sada vlastností typu entity, která určuje identitu). Jeden nebo více elementů PropertyRef lze použít k definování klíče entity.
  • Závislý nebo hlavní konec referenčního omezení.

Element PropertyRef může obsahovat pouze prvky poznámek (nula nebo více) jako podřízené prvky.

Poznámka:

Prvky poznámek jsou povoleny pouze v CSDL v2 a novějších.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít pro PropertyRef element.

Název atributu Je povinné Hodnota
Název Ano Název odkazované vlastnosti.

 

Poznámka:

U elementu PropertyRef lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad definuje typ entity (Book). Klíč entity je definován odkazem na vlastnost ISBN typu entity.

 <EntityType Name="Book">
   <Key>
     <PropertyRef Name="ISBN" />
   </Key>
   <Property Type="String" Name="ISBN" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" />
   <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
   <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                       FromRole="Book" ToRole="Publisher" />
   <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                       FromRole="Book" ToRole="Author" />
 </EntityType>

 

V dalším příkladu se používají dva elementy PropertyRef k označení, že dvě vlastnosti (ID a PublisherId) jsou objekt zabezpečení a závislé konce referenčního omezení.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

Element ReferenceType (CSDL)

Element ReferenceType v konceptuálním jazyce definice schématu (CSDL) určuje odkaz na typ entity. Element ReferenceType může být podřízeným prvkem následujících prvků:

  • ReturnType (funkce)
  • Parametr
  • CollectionType

Element ReferenceType se používá při definování parametru nebo návratového typu pro funkci.

Element ReferenceType může mít následující podřízené elementy (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu ReferenceType .

Název atributu Je povinné Hodnota
Typ Ano Název typu entity, na který se odkazuje.

 

Poznámka:

U elementu ReferenceType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje element ReferenceType, který se používá jako podřízený element Parameter v modelem definované funkci, která přijímá odkaz na typ entity Person:

 <Function Name="GetYearsEmployed" ReturnType="Edm.Int32">
   <Parameter Name="instructor">
     <ReferenceType Type="SchoolModel.Person" />
   </Parameter>
   <DefiningExpression>
   Year(CurrentDateTime()) - Year(cast(instructor.HireDate as DateTime))
   </DefiningExpression>
 </Function>

 

Následující příklad ukazuje element ReferenceType použitý jako podřízený prvek ReturnType (Function) v modelem definované funkci, která vrací odkaz na typ entity Person :

 <Function Name="GetPersonReference">
     <Parameter Name="p" Type="SchoolModel.Person" />
     <ReturnType>
         <ReferenceType Type="SchoolModel.Person" />
     </ReturnType>
     <DefiningExpression>
           REF(p)
     </DefiningExpression>
 </Function>

 

 

ReferentialConstraint – element (CSDL)

Element ReferentialConstraint v koncepčním jazyce definice schématu (CSDL) definuje funkce, které se podobaly omezení referenční integrity v relační databázi. Stejně jako sloupec (nebo sloupce) z tabulky databáze může odkazovat na primární klíč jiné tabulky, vlastnost (nebo vlastnosti) typu entity může odkazovat na klíč entity jiného typu entity. Typ entity, na který se odkazuje, se nazývá hlavní konec omezení. Typ entity, který odkazuje na konec objektu zabezpečení, se nazývá závislý konec omezení.

Pokud cizí klíč, který je vystavený u jednoho typu entity odkazuje na vlastnost jiného typu entity, element ReferentialConstraint definuje přidružení mezi těmito dvěma typy entit. Vzhledem k tomu, referentialConstraint element poskytuje informace o tom, jak dva typy entit souvisí, není v jazyce specifikace mapování (MSL) nutný žádný odpovídající element AssociationSetMapping. Přidružení mezi dvěma typy entit, které nemají vystavené cizí klíče, musí mít odpovídající element AssociationSetMapping , aby bylo možné mapovat informace o přidružení ke zdroji dat.

Pokud cizí klíč není vystaven u typu entity, element ReferentialConstraint může definovat pouze omezení primárního klíče k primárnímu klíči mezi typem entity a jiným typem entity.

Element ReferentialConstraint může mít následující podřízené elementy (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Objekt zabezpečení (přesně jeden prvek)
  • Závislý (přesně jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Element ReferentialConstraint může mít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

Příklad

Následující příklad ukazuje ReferentialConstraint element, který se používá jako součást definice PublishedBy asociace.

 <Association Name="PublishedBy">
   <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
   </End>
   <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
   <ReferentialConstraint>
     <Principal Role="Publisher">
       <PropertyRef Name="Id" />
     </Principal>
     <Dependent Role="Book">
       <PropertyRef Name="PublisherId" />
     </Dependent>
   </ReferentialConstraint>
 </Association>

 

 

ReturnType (function) – element (CSDL)

Element ReturnType (Function) v jazyce csDL (Conceptual Schema Definition Language) určuje návratový typ funkce, která je definována v elementu Function. Návratový typ funkce lze také zadat pomocí atributu ReturnType .

Návratové typy můžou být libovolný typ EdmSimpleType, typ entity, komplexní typ, typ řádku, typ odkazu nebo kolekce jednoho z těchto typů.

Návratový typ funkce lze zadat buď pomocí atributu Type elementu ReturnType (Function), nebo s jedním z následujících podřízených prvků:

  • CollectionType
  • ReferenceType
  • Typ řádku

Poznámka:

Model se neověří, pokud zadáte návratový typ funkce s atributem Type elementu ReturnType (Function) a jedním z podřízených prvků.

 

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu ReturnType (Function).

Název atributu Je povinné Hodnota
ReturnType No Typ vrácený funkcí.

 

Poznámka:

U elementu ReturnType (Function) lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad používá function element k definování funkce, která vrací počet let knihy byl v tisku. Všimněte si, že návratový typ je určen atributem Type elementu ReturnType (Function).

 <Function Name="GetYearsInPrint">
   <ReturnType Type=="Edm.Int32">
   <Parameter Name="book" Type="BooksModel.Book" />
   <DefiningExpression>
    Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
   </DefiningExpression>
 </Function>

 

 

ReturnType (FunctionImport) – element (CSDL)

Element ReturnType (FunctionImport) v jazyce definice konceptu schématu (CSDL) určuje návratový typ funkce, která je definována v elementu FunctionImport. Návratový typ funkce lze také zadat pomocí atributu ReturnType .

Návratové typy můžou být libovolná kolekce typu entity, komplexního typu nebo EdmSimpleType.

Návratový typ funkce je určen atributem Type elementu ReturnType (FunctionImport).

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu ReturnType (FunctionImport).

Název atributu Je povinné Hodnota
Typ No Typ, který funkce vrátí. Hodnota musí být kolekce ComplexType, EntityType nebo EDMSimpleType.
Sada entit No Pokud funkce vrátí kolekci typů entit, hodnota EntitySet musí být entita, do které kolekce patří. V opačném případě nesmí být použit atribut EntitySet.

 

Poznámka:

U elementu ReturnType (FunctionImport) lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad používá FunctionImport , který vrací knihy a vydavatele. Všimněte si, že funkce vrací dvě sady výsledků, a proto jsou zadány dva elementy ReturnType (FunctionImport).

 <FunctionImport Name="GetBooksAndPublishers">
   <ReturnType Type=="Collection(BooksModel.Book )" EntitySet=”Books”>
   <ReturnType Type=="Collection(BooksModel.Publisher)" EntitySet=”Publishers”>
 </FunctionImport>

 

 

RowType – element (CSDL)

Element RowType v jazyce CSDL (Conceptual Schema Definition Language) definuje nepojmenovanou strukturu jako parametr nebo návratový typ pro funkci definovanou v koncepčním modelu.

Prvek RowType může být podřízenými následujícími prvky:

  • CollectionType
  • Parametr
  • ReturnType (funkce)

Element RowType může mít následující podřízené elementy (v uvedeném pořadí):

  • Vlastnost (jedna nebo více)
  • Prvky poznámek (nula nebo více)

Použitelné atributy

U elementu RowType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

Příklad

Následující příklad ukazuje modelem definovanou funkci, která používá CollectionType element k určení, že funkce vrací kolekci řádků (jak je uvedeno v RowType elementu).

 <Function Name="LastNamesAfter">
   <Parameter Name="someString" Type="Edm.String" />
   <ReturnType>
    <CollectionType>
      <RowType>
        <Property Name="FirstName" Type="Edm.String" Nullable="false" />
        <Property Name="LastName" Type="Edm.String" Nullable="false" />
      </RowType>
    </CollectionType>
   </ReturnType>
   <DefiningExpression>
             SELECT VALUE ROW(p.FirstName, p.LastName)
             FROM SchoolEntities.People AS p
             WHERE p.LastName &gt;= somestring
   </DefiningExpression>
 </Function>

Element schématu (CSDL)

Element Schema je kořenový prvek konceptuální definice modelu. Obsahuje definice pro objekty, funkce a kontejnery, které tvoří koncepční model.

Element Schema může obsahovat nula nebo více z následujících podřízených prvků:

  • Použití
  • EntityContainer
  • EntityType
  • EnumType
  • Přidružení
  • ComplexType
  • Function

Prvek schématu může obsahovat nula nebo jeden prvek poznámky.

Poznámka:

Element Funkce a prvky poznámek jsou povoleny pouze v CSDL verze 2 a novější.

 

Element Schema používá atribut Namespace k definování oboru názvů pro typ entity, komplexní typ a objekty přidružení v konceptuálním modelu. V rámci oboru názvů nemohou mít žádné dva objekty stejný název. Obory názvů mohou zahrnovat více prvků schématu a více souborů .csdl.

Koncepční obor názvů modelu se liší od oboru názvů XML elementu Schema . Koncepční obor názvů modelu (definovaný atributem Obor názvů ) je logický kontejner pro typy entit, komplexní typy a typy přidružení. Obor názvů XML (označený atributem xmlns) elementu Schema je výchozí obor názvů pro podřízené elementy a atributy elementu Schema. Obory názvů XML formuláře https://schemas.microsoft.com/ado/YYYY/MM/edm (kde YYYYY a MM představují rok a měsíc) jsou vyhrazeny pro CSDL. Vlastní prvky a atributy nemohou být v oborech názvů, které mají tento formulář.

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Schema .

Název atributu Je povinné Hodnota
Obor názvů Ano Obor názvů konceptuálního modelu. Hodnota atributu Namespace slouží k vytvoření plně kvalifikovaného názvu typu. Pokud je například EntityType s názvem Customer v oboru názvů Simple.Example.Model, pak plně kvalifikovaný název EntityType je SimpleExampleModel.Customer.
Následující řetězce nelze použít jako hodnotu atributu Namespace : System, Transient nebo Edm. Hodnota atributu Obor názvů nemůže být stejná jako hodnota atributu Namespace v elementu schématu SSDL.
Alias No Identifikátor použitý místo názvu oboru názvů. Pokud je například EntityType s názvem Customer v oboru názvů Simple.Example.Model a hodnota atributu Alias je Model, můžete použít Model.Customer jako plně kvalifikovaný název EntityType.

 

Poznámka:

U elementu Schema lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Schema element, který obsahuje EntityContainer element, dva EntityType element a jeden Association element.

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
      xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
      xmlns:store="https://schemas.microsoft.com/ado/2009/11/edm/EntityStoreSchemaGenerator"
       Namespace="ExampleModel" Alias="Self">
         <EntityContainer Name="ExampleModelContainer">
           <EntitySet Name="Customers"
                      EntityType="ExampleModel.Customer" />
           <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
           <AssociationSet
                       Name="CustomerOrder"
                       Association="ExampleModel.CustomerOrders">
             <End Role="Customer" EntitySet="Customers" />
             <End Role="Order" EntitySet="Orders" />
           </AssociationSet>
         </EntityContainer>
         <EntityType Name="Customer">
           <Key>
             <PropertyRef Name="CustomerId" />
           </Key>
           <Property Type="Int32" Name="CustomerId" Nullable="false" />
           <Property Type="String" Name="Name" Nullable="false" />
           <NavigationProperty
                    Name="Orders"
                    Relationship="ExampleModel.CustomerOrders"
                    FromRole="Customer" ToRole="Order" />
         </EntityType>
         <EntityType Name="Order">
           <Key>
             <PropertyRef Name="OrderId" />
           </Key>
           <Property Type="Int32" Name="OrderId" Nullable="false" />
           <Property Type="Int32" Name="ProductId" Nullable="false" />
           <Property Type="Int32" Name="Quantity" Nullable="false" />
           <NavigationProperty
                    Name="Customer"
                    Relationship="ExampleModel.CustomerOrders"
                    FromRole="Order" ToRole="Customer" />
           <Property Type="Int32" Name="CustomerId" Nullable="false" />
         </EntityType>
         <Association Name="CustomerOrders">
           <End Type="ExampleModel.Customer"
                Role="Customer" Multiplicity="1" />
           <End Type="ExampleModel.Order"
                Role="Order" Multiplicity="*" />
           <ReferentialConstraint>
             <Principal Role="Customer">
               <PropertyRef Name="CustomerId" />
             </Principal>
             <Dependent Role="Order">
               <PropertyRef Name="CustomerId" />
             </Dependent>
           </ReferentialConstraint>
         </Association>
       </Schema>

 

 

TypeRef – element (CSDL)

Element TypeRef v koncepčním jazyce definice schématu (CSDL) poskytuje odkaz na existující pojmenovaný typ. TypeRef element může být podřízený CollectionType element, který slouží k určení, že funkce má kolekci jako parametr nebo návratový typ.

Element TypeRef může mít následující podřízené prvky (v uvedeném pořadí):

  • Dokumentace (nula nebo jeden prvek)
  • Prvky poznámek (nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu TypeRef . Všimněte si, že atributy DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode a Collation platí pouze pro EDMSimpleTypes.

Název atributu Je povinné Hodnota
Typ No Název odkazovaného typu.
Nullable No True (výchozí hodnota) nebo False v závislosti na tom, zda vlastnost může mít hodnotu null.
[!POZNÁMKA]
> V CSDL v1 komplexní typ vlastnost musí mít Nullable="False".
DefaultValue No Výchozí hodnota vlastnosti.
MaxLength No Maximální délka hodnoty vlastnosti.
Pevná délka No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec s pevnou délkou.
Přesnost No Přesnost hodnoty vlastnosti.
Měřítko No Měřítko hodnoty vlastnosti.
SRID No Referenční identifikátor prostorového systému Platné pouze pro vlastnosti prostorových typů. Další informace naleznete v tématu SRID a SRID (SQL Server).
Unicode No Pravda nebo Nepravda v závislosti na tom, zda bude hodnota vlastnosti uložena jako řetězec Unicode.
Kolace No Řetězec, který určuje kompletující sekvenci, která se má použít ve zdroji dat.

 

Poznámka:

U elementu CollectionType lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje modelem definovanou funkci, která používá TypeRef element (jako podřízený element CollectionType ) k určení, že funkce přijímá kolekci typů entit Oddělení .

 <Function Name="GetAvgBudget">
      <Parameter Name="Departments">
          <CollectionType>
             <TypeRef Type="SchoolModel.Department"/>
          </CollectionType>
           </Parameter>
       <ReturnType Type="Collection(Edm.Decimal)"/>
       <DefiningExpression>
             SELECT VALUE AVG(d.Budget) FROM Departments AS d
       </DefiningExpression>
 </Function>

 

 

Using – element (CSDL)

Element Using v koncepčním jazyce definice schématu (CSDL) importuje obsah konceptuálního modelu, který existuje v jiném oboru názvů. Nastavením hodnoty atributu Namespace můžete odkazovat na typy entit, komplexní typy a typy přidružení, které jsou definovány v jiném konceptuálním modelu. Více než jeden Using element může být podřízený element Schématu.

Poznámka:

Element Using v CSDL nefunguje přesně jako příkaz using v programovacím jazyce. Importem oboru názvů s příkazem using v programovacím jazyce nemáte vliv na objekty v původním oboru názvů. V CSDL může importovaný obor názvů obsahovat typ entity odvozený z typu entity v původním oboru názvů. To může ovlivnit sady entit deklarované v původním oboru názvů.

 

Element Using může mít následující podřízené prvky:

  • Dokumentace (povolená nula nebo jeden prvek)
  • Prvky poznámek (jsou povoleny nula nebo více prvků)

Použitelné atributy

Následující tabulka popisuje atributy, které lze použít u elementu Using .

Název atributu Je povinné Hodnota
Obor názvů Ano Název importovaného oboru názvů.
Alias Ano Identifikátor použitý místo názvu oboru názvů. I když je tento atribut povinný, není nutné, aby byl použit místo názvu oboru názvů k opravňujícím názvům objektů.

 

Poznámka:

U elementu Using lze použít libovolný počet atributů poznámek (vlastní atributy XML). Vlastní atributy však nemusí patřit do žádného oboru názvů XML, který je vyhrazený pro CSDL. Plně kvalifikované názvy pro všechny dva vlastní atributy nemohou být stejné.

 

Příklad

Následující příklad ukazuje Using element, který se používá k importu oboru názvů, který je definován jinde. Všimněte si, že obor názvů pro zobrazený prvek schématu je BooksModel. Vlastnost Address PublisherEntityType je komplexní typ, který je definován v ExtendedBooksModel oboru názvů (importován pomocí elementu Using ).

 <Schema xmlns="https://schemas.microsoft.com/ado/2009/11/edm"
           xmlns:cg="https://schemas.microsoft.com/ado/2009/11/codegeneration"
           xmlns:store="https://schemas.microsoft.com/ado/2009/11/edm/EntityStoreSchemaGenerator"
           Namespace="BooksModel" Alias="Self">

     <Using Namespace="BooksModel.Extended" Alias="BMExt" />

 <EntityContainer Name="BooksContainer" >
       <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
     </EntityContainer>

 <EntityType Name="Publisher">
       <Key>
         <PropertyRef Name="Id" />
       </Key>
       <Property Type="Int32" Name="Id" Nullable="false" />
       <Property Type="String" Name="Name" Nullable="false" />
       <Property Type="BMExt.Address" Name="Address" Nullable="false" />
     </EntityType>

 </Schema>

 

 

Atributy poznámek (CSDL)

Atributy poznámek v jazyce CSDL (Conceptual Schema Definition Language) jsou vlastní atributy XML v koncepčním modelu. Kromě platné struktury XML musí být splněny následující atributy poznámek:

  • Atributy poznámek nesmí být v žádném oboru názvů XML, který je vyhrazen pro CSDL.
  • U daného elementu CSDL lze použít více než jeden atribut poznámky.
  • Plně kvalifikované názvy všech dvou atributů poznámek nesmí být stejné.

Atributy poznámek lze použít k poskytnutí dalších metadat o prvcích konceptuálního modelu. K metadatům obsaženým v elementech poznámek lze přistupovat za běhu pomocí tříd v oboru názvů System.Data.Metadata.Edm.

Příklad

Následující příklad ukazuje EntityType element s atributem anotace (CustomAttribute). Příklad také ukazuje prvek poznámky použitý u elementu typu entity.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

Následující kód načte metadata v atributu anotace a zapíše je do konzoly:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomAttribute"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomAttribute"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

Výše uvedený kód předpokládá, že School.csdl soubor je ve výstupním adresáři projektu a že jste do projektu přidali následující Imports příkazy a Using příkazy:

 using System.Data.Metadata.Edm;

 

 

Prvky poznámek (CSDL)

Prvky poznámek v jazyce CSDL (Conceptual Schema Definition Language) jsou vlastní elementy XML v koncepčním modelu. Kromě toho, že má platnou strukturu XML, musí být splněné následující podmínky pro prvky poznámek:

  • Prvky poznámek nesmí být v žádném oboru názvů XML, který je vyhrazen pro CSDL.
  • Více než jeden prvek poznámky může být podřízený daný prvek CSDL.
  • Plně kvalifikované názvy všech dvou prvků poznámek nesmí být stejné.
  • Prvky poznámek musí být uvedeny za všemi ostatními podřízenými prvky daného elementu CSDL.

Prvky poznámek lze použít k poskytnutí dalších metadat o prvech v konceptuálním modelu. Počínaje rozhraním .NET Framework verze 4 jsou metadata obsažená v elementech poznámek přístupná za běhu pomocí tříd v oboru názvů System.Data.Metadata.Edm.

Příklad

Následující příklad ukazuje EntityType element s anotační element (CustomElement). Příklad také ukazuje atribut anotace použitý u elementu typu entity.

 <Schema Namespace="SchoolModel" Alias="Self"
         xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
         xmlns="https://schemas.microsoft.com/ado/2009/11/edm">
   <EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
     <EntitySet Name="People" EntityType="SchoolModel.Person" />
   </EntityContainer>
   <EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
               p:CustomAttribute="Data here.">
     <Key>
       <PropertyRef Name="PersonID" />
     </Key>
     <Property Name="PersonID" Type="Int32" Nullable="false"
               annotation:StoreGeneratedPattern="Identity" />
     <Property Name="LastName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="FirstName" Type="String" Nullable="false"
               MaxLength="50" Unicode="true" FixedLength="false" />
     <Property Name="HireDate" Type="DateTime" />
     <Property Name="EnrollmentDate" Type="DateTime" />
     <p:CustomElement>
       Custom metadata.
     </p:CustomElement>
   </EntityType>
 </Schema>

 

Následující kód načte metadata v prvku poznámky a zapíše je do konzoly:

 EdmItemCollection collection = new EdmItemCollection("School.csdl");
 MetadataWorkspace workspace = new MetadataWorkspace();
 workspace.RegisterItemCollection(collection);
 EdmType contentType;
 workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
 if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomElement"))
 {
     MetadataProperty annotationProperty =
         contentType.MetadataProperties["http://CustomNamespace.com:CustomElement"];
     object annotationValue = annotationProperty.Value;
     Console.WriteLine(annotationValue.ToString());
 }

 

Výše uvedený kód předpokládá, že soubor School.csdl je ve výstupním adresáři projektu a že jste do projektu přidali následující Imports příkazy a Using příkazy:

 using System.Data.Metadata.Edm;

 

 

Koncepční typy modelů (CSDL)

Jazyk CSDL (Conceptual Schema Definition Language) podporuje sadu abstraktních primitivních datových typů označovaných jako EDMSimpleTypes, které definují vlastnosti v konceptuálním modelu. EDMSimpleTypes jsou proxy servery pro primitivní datové typy, které jsou podporovány v úložišti nebo hostitelském prostředí.

V následující tabulce jsou uvedeny primitivní datové typy, které podporuje CSDL. Tabulka obsahuje také omezující vlastnosti, které je možné použít pro každý typ EDMSimpleType.

EDMSimpleType Popis Použitelné omezující vlastnosti
Edm.Binary Obsahuje binární data. MaxLength, FixedLength, Nullable, Default
Edm.Boolean Obsahuje hodnotu true nebo false. Nullable, Default
Edm.Byte Obsahuje celočíselnou hodnotu bez znaménka. Přesnost, Hodnota Nullable, Výchozí
Edm.DateTime Představuje datum a čas. Přesnost, Hodnota Nullable, Výchozí
Edm.DateTimeOffset Obsahuje datum a čas jako posun v minutách od GMT. Přesnost, Hodnota Nullable, Výchozí
Edm.Decimal Obsahuje číselnou hodnotu s pevnou přesností a měřítkem. Přesnost, Hodnota Nullable, Výchozí
Edm.Double Obsahuje číslo s plovoucí desetinnou čárkou s přesností na 15 číslic. Přesnost, Hodnota Nullable, Výchozí
Edm.Float Obsahuje číslo s plovoucí desetinnou čárkou s 7místnou přesností. Přesnost, Hodnota Nullable, Výchozí
Edm.Guid Obsahuje jedinečný identifikátor 16 bajtů. Přesnost, Hodnota Nullable, Výchozí
Edm.Int16 Obsahuje 16bitovou celočíselnou hodnotu se signedm. Přesnost, Hodnota Nullable, Výchozí
Edm.Int32 Obsahuje 32bitovou celočíselnou hodnotu se signedm. Přesnost, Hodnota Nullable, Výchozí
Edm.Int64 Obsahuje 64bitovou celočíselnou hodnotu se 64bitovou sadou. Přesnost, Hodnota Nullable, Výchozí
Edm.SByte Obsahuje 8bitovou celočíselnou hodnotu se signedm. Přesnost, Hodnota Nullable, Výchozí
Edm.String Obsahuje data znaků. Unicode, FixedLength, MaxLength, Collation, Precision, Nullable, Default
Edm.Time Obsahuje denní dobu. Přesnost, Hodnota Nullable, Výchozí
Edm.Geography Nullable, Default, SRID
Edm.GeographyPoint Nullable, Default, SRID
Edm.GeographyLineString Nullable, Default, SRID
Edm.GeographyPolygon Nullable, Default, SRID
Edm.GeographyMultiPoint Nullable, Default, SRID
Edm.GeographyMultiLineString Nullable, Default, SRID
Edm.GeographyMultiPolygon Nullable, Default, SRID
Edm.GeographyCollection Nullable, Default, SRID
Edm.Geometry Nullable, Default, SRID
Edm.GeometryPoint Nullable, Default, SRID
Edm.GeometryLineString Nullable, Default, SRID
Edm.GeometryPolygon Nullable, Default, SRID
Edm.GeometryMultiPoint Nullable, Default, SRID
Edm.GeometryMultiLineString Nullable, Default, SRID
Edm.GeometryMultiPolygon Nullable, Default, SRID
Edm.GeometryCollection Nullable, Default, SRID

Fazety (CSDL)

Omezující vlastnosti jazyka CSDL (Conceptual Schema Definition Language) představují omezení vlastností typů entit a složitých typů. Omezující vlastnosti se zobrazují jako atributy XML u následujících elementů CSDL:

  • Vlastnost
  • TypeRef
  • Parametr

Následující tabulka popisuje omezující vlastnosti podporované v CSDL. Všechny omezující vlastnosti jsou volitelné. Některé omezující vlastnosti uvedené níže používají Entity Framework při generování databáze z konceptuálního modelu.

Poznámka:

Informace o datových typech v konceptuálním modelu najdete v tématu Koncepční typy modelů (CSDL).

Faseta Popis Platí pro Používá se pro generování databáze. Používá modul runtime
Kolace Určuje kolací sekvenci (nebo pořadí řazení), která se má použít při provádění operací porovnání a řazení hodnot vlastnosti. Edm.String Yes No
ConcurrencyMode Označuje, že hodnota vlastnosti by měla být použita pro optimistické kontroly souběžnosti. Všechny vlastnosti EDMSimpleType No Ano
Výchozí Určuje výchozí hodnotu vlastnosti, pokud není při vytváření instance zadána žádná hodnota. Všechny vlastnosti EDMSimpleType Ano Yes
Pevná délka Určuje, zda se délka hodnoty vlastnosti může lišit. Edm.Binary, Edm.String Yes No
MaxLength Určuje maximální délku hodnoty vlastnosti. Edm.Binary, Edm.String Yes No
Nullable Určuje, zda vlastnost může mít hodnotu null . Všechny vlastnosti EDMSimpleType Ano Yes
Přesnost U vlastností typu Decimal určuje počet číslic, které může mít hodnota vlastnosti. Pro vlastnosti typu Time, DateTime a DateTimeOffset určuje počet číslic pro zlomkovou část sekund hodnoty vlastnosti. Edm.DateTime, Edm.DateTimeOffset, Edm.Decimal, Edm.Time Yes No
Měřítko Určuje počet číslic napravo od desetinné čárky pro hodnotu vlastnosti. Edm.Decimal Yes No
SRID Určuje ID referenčního systému prostorového systému. Další informace naleznete v tématu SRID a SRID (SQL Server). Edm.Geography, Edm.GeographyPoint, Edm.GeographyLineString, Edm.GeographyPolygon, Edm.GeographyMultiPoint, Edm.GeographyMultiLineString, Edm.GeographyMultiPolygon, Edm.GeographyCollection, Edm.Geometry, Edm.GeometryPoint, Edm.GeometryLineString, Edm.GeometryPolygon, Edm.GeometryMultiPoint, Edm.GeometryMultiLineString, Edm.GeometryMultiPolygon, Edm.GeometryCollection No Ano
Unicode Určuje, zda je hodnota vlastnosti uložena jako Unicode. Edm.String Ano Ano

Poznámka:

Při generování databáze z koncepčního modelu Průvodce generováním databáze rozpozná hodnotu Atribut StoreGeneratedPattern u elementu Property , pokud je v následujícím oboru názvů: https://schemas.microsoft.com/ado/2009/02/edm/annotation. Podporované hodnoty atributu jsou Identity a Computed. Hodnota Identity vytvoří sloupec databáze s hodnotou identity vygenerovanou v databázi. Hodnota Computed vytvoří sloupec s hodnotou vypočítanou v databázi.

Příklad

Následující příklad ukazuje omezující vlastnosti použité u vlastností typu entity:

 <EntityType Name="Product">
   <Key>
     <PropertyRef Name="ProductId" />
   </Key>
   <Property Type="Int32"
             Name="ProductId" Nullable="false"
             a:StoreGeneratedPattern="Identity"
    xmlns:a="https://schemas.microsoft.com/ado/2009/02/edm/annotation" />
   <Property Type="String"
             Name="ProductName"
             Nullable="false"
             MaxLength="50" />
   <Property Type="String"
             Name="Location"
             Nullable="true"
             MaxLength="25" />
 </EntityType>