Aracılığıyla paylaş


SSDL Belirtimi

Depolama şema tanımı dili (SSDL), bir Entity Framework uygulamasının depolama modelini açıklayan XML tabanlı bir dildir.

Entity Framework uygulamasında depolama modeli meta verileri bir .ssdl dosyasından (SSDL ile yazılmış) System.Data.Metadata.Edm.StoreItemCollection örneğine yüklenir ve System.Data.Metadata.Edm.MetadataWorkspace sınıfındaki yöntemler kullanılarak erişilebilir. Entity Framework, sorguları kavramsal modele göre çevirip belirli komutları depolamak için depolama modeli meta verilerini kullanır.

Entity Framework Tasarım Aracı (EF Tasarım Aracı), depolama modeli bilgilerini tasarım zamanında bir .edmx dosyasında depolar. Derleme zamanında Entity Tasarım Aracı, çalışma zamanında Entity Framework tarafından gereken .ssdl dosyasını oluşturmak için bir .edmx dosyasındaki bilgileri kullanır.

SSDL sürümleri XML ad alanlarına göre ayırt edilir.

SSDL Sürümü XML Ad Alanı
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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) association öğesi, temel alınan veritabanında yabancı anahtar kısıtlaması ile katılan tablo sütunlarını belirtir. İki gerekli alt Uç öğesi ilişkilendirmenin uçlarında tabloları ve her uçta çokluğu belirtir. İsteğe bağlı bir ReferentialConstraint öğesi, ilişkilendirmenin sorumlu ve bağımlı uçlarının yanı sıra katılan sütunları da belirtir. Hiçbir ReferentialConstraint öğesi yoksa, ilişkilendirmenin sütun eşlemelerini belirtmek için bir AssociationSetMapping öğesi kullanılmalıdır.

Association öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Bitiş (tam olarak iki)
  • ReferentialConstraint (sıfır veya bir)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda Association öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet Temel alınan veritabanında karşılık gelen yabancı anahtar kısıtlamasının adı.

Dekont

Association öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasına katılan sütunları belirtmek için ReferentialConstraint öğesini kullanan bir Association öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) AssociationSet öğesi, temel alınan veritabanındaki iki tablo arasındaki yabancı anahtar kısıtlamasını temsil eder. Yabancı anahtar kısıtlaması katılan tablo sütunları bir Association öğesinde belirtilir. Belirli bir AssociationSet öğesine karşılık gelen Association öğesi AssociationSet öğesinin Association özniteliğinde belirtilir.

SSDL ilişkilendirme kümeleri, associationSetMapping öğesi tarafından CSDL ilişkilendirme kümelerine eşlenir. Ancak, belirli bir CSDL ilişkilendirme kümesi için CSDL ilişkilendirmesi bir ReferentialConstraint öğesi kullanılarak tanımlanırsa, karşılık gelen AssociationSetMapping öğesi gerekmez. Bu durumda, bir AssociationSetMapping öğesi varsa, tanımladığı eşlemeler ReferentialConstraint öğesi tarafından geçersiz kılınacaktır.

AssociationSet öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Bitiş (sıfır veya iki)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda AssociationSet öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet İlişkilendirme kümesinin temsil ettiği yabancı anahtar kısıtlamasının adı.
Derneği Evet Yabancı anahtar kısıtlaması katılan sütunları tanımlayan ilişkilendirmenin adı.

Dekont

AssociationSet öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, temel alınan veritabanındaki yabancı anahtar kısıtlamasını FK_CustomerOrders temsil eden bir AssociationSet öğesi gösterilmektedir:

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

CollectionType Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) CollectionType öğesi, bir işlevin dönüş türünün bir koleksiyon olduğunu belirtir. CollectionType öğesi ReturnType öğesinin alt öğesidir. Koleksiyon türü RowType alt öğesi kullanılarak belirtilir:

Dekont

CollectionType öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, işlevin bir satır koleksiyonu döndürdüğünü belirtmek için CollectionType öğesini kullanan bir işlev gösterilmektedir.

   <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 Öğesi (SSDL)

Depo şema tanımı dilindeki CommandText öğesi (SSDL), veritabanında yürütülen bir SQL deyimi tanımlamanızı sağlayan function öğesinin alt öğesidir. CommandText öğesi, veritabanındaki saklı yordama benzer işlevler eklemenize olanak tanır, ancak depolama modelinde CommandText öğesini tanımlarsınız.

CommandText öğesinin alt öğeleri olamaz. CommandText öğesinin gövdesi, temel alınan veritabanı için geçerli bir SQL deyimi olmalıdır.

CommandText öğesi için hiçbir öznitelik geçerli değildir.

Örnek

Aşağıdaki örnekte, alt CommandText öğesi olan bir İşlev öğesi gösterilmektedir. UpdateProductInOrder işlevini kavramsal modele aktararak ObjectContext üzerinde bir yöntem olarak kullanıma sunma.  

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) DefiningQuery öğesi, sql deyimini doğrudan temel alınan veritabanında yürütmenizi sağlar. DefiningQuery öğesi genellikle veritabanı görünümü gibi kullanılır, ancak görünüm veritabanı yerine depolama modelinde tanımlanır. Bir DefiningQuery öğesinde tanımlanan görünüm, EntitySetMapping öğesi aracılığıyla kavramsal modeldeki bir varlık türüne eşlenebilir. Bu eşlemeler salt okunur.  

Aşağıdaki SSDL söz dizimi, bir EntitySet bildirimini ve ardından görünümü almak için kullanılan sorguyu içeren DefiningQuery öğesini gösterir.

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

Görünümler üzerinden okuma-yazma senaryolarını etkinleştirmek için Entity Framework'teki saklı yordamları kullanabilirsiniz. Verileri almak ve saklı yordamlarla değişiklik işlemek için temel tablo olarak veri kaynağı görünümünü veya Entity SQL görünümünü kullanabilirsiniz.

Microsoft SQL Server Compact 3.5'i hedeflemek için DefiningQuery öğesini kullanabilirsiniz. SQL Server Compact 3.5 saklı yordamları desteklemese de, DefiningQuery öğesiyle benzer işlevleri uygulayabilirsiniz. Programlama dilinde kullanılan veri türleri ile veri kaynağının veri türleri arasındaki uyuşmazlığı aşmak için saklı yordamlar oluşturmak yararlı olabilecek başka bir yerdir. Belirli bir parametre kümesini alan ve ardından verileri silecek saklı yordam gibi farklı bir parametre kümesine sahip saklı yordamı çağıran bir DefiningQuery yazabilirsiniz.

Bağımlı Öğe (SSDL)

Depo şema tanımı dilindeki (SSDL) Dependent öğesi, yabancı anahtar kısıtlamasının bağımlı sonunu tanımlayan (bilgi kısıtlaması olarak da adlandırılır) ReferentialConstraint öğesinin alt öğesidir. Dependent öğesi, bir tablodaki birincil anahtar sütununa (veya sütunlarına) başvuran sütunu (veya sütunları) belirtir. PropertyRef öğeleri hangi sütunlara başvurulacağını belirtir. Principal öğesi, Dependent öğesinde belirtilen sütunlar tarafından başvuruda bulunan birincil anahtar sütunlarını belirtir.

Dependent öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • PropertyRef (bir veya daha fazla)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda, Dependent öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Rol Evet karşılık gelen End öğesinin Role özniteliğiyle (kullanılıyorsa) aynı değer; aksi takdirde başvuran sütunu içeren tablonun adı.

Dekont

Dependent öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasına katılan sütunları belirtmek için ReferentialConstraint öğesini kullanan bir Association öğesi gösterilmektedir. Dependent öğesi, kısıtlamanın bağımlı sonu olarak Order tablosunun CustomerId sütununu belirtir.

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

Belge Öğesi (SSDL)

Depolama şeması tanım dilindeki (SSDL) Belgeler öğesi, üst öğede tanımlanan bir nesne hakkında bilgi sağlamak için kullanılabilir.

Documentation öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Özet: Üst öğenin kısa bir açıklaması. (sıfır veya bir öğe)
  • LongDescription: Üst öğenin kapsamlı bir açıklaması. (sıfır veya bir öğe)

Geçerli Öznitelikler

Documentation öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnek, Bir EntityType öğesinin alt öğesi olarak Documentation öğesini gösterir.

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki End öğesi (SSDL), temel alınan veritabanındaki yabancı anahtar kısıtlamasının bir ucundaki tabloyu ve satır sayısını belirtir. End öğesi Association öğesinin veya AssociationSet öğesinin alt öğesi olabilir. Her durumda, olası alt öğeler ve geçerli öznitelikler farklıdır.

İlişkilendirme Öğesinin Alt Öğesi Olarak End Öğesi

End öğesi (Association öğesinin alt öğesi olarak), sırasıyla Type ve Multiplicity öznitelikleriyle yabancı anahtar kısıtlamasının sonundaki tablo ve satır sayısını belirtir. Yabancı anahtar kısıtlamasının uçları SSDL ilişkisinin bir parçası olarak tanımlanır; BIR SSDL ilişkisinin tam olarak iki ucu olmalıdır.

Bir End öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir öğe)
  • OnDelete (sıfır veya bir öğe)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğe)

Geçerli Öznitelikler

Aşağıdaki tabloda, bir Association öğesinin alt öğesi olduğunda End öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Tür Evet Yabancı anahtar kısıtlamasının sonundaki SSDL varlık kümesinin tam adı.
Rol Hayır İlgili ReferentialConstraint öğesinin Principal veya Dependent öğesindeki Role özniteliğinin değeri (kullanılıyorsa).
Çokluk Evet 1, 0..1 veya * yabancı anahtar kısıtlamasının sonunda olabilecek satır sayısına bağlı olarak.
1 , yabancı anahtar kısıtlaması sonunda tam olarak bir satır olduğunu gösterir.
0..1 , yabancı anahtar kısıtlama sonunda sıfır veya bir satır olduğunu gösterir.
* yabancı anahtar kısıtlaması sonunda sıfır, bir veya daha fazla satır olduğunu gösterir.

Dekont

End öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasını tanımlayan bir Association öğesi gösterilmektedir. Her End öğesinde belirtilen Çokluk değerleri, Siparişler tablosundaki birçok satırın Müşteriler tablosundaki bir satırla ilişkilendirilebileceğini, ancak Müşteriler tablosundaki tek bir satırın Siparişler tablosundaki bir satırla ilişkilendirilebileceğini gösterir. Ayrıca, OnDelete öğesi, Müşteriler tablosundaki belirli bir satıra başvuran Orders tablosundaki tüm satırların, Müşteriler tablosundaki satır silinirse silineceğini gösterir.

 <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 Öğesi AssociationSet Öğesinin Alt Öğesi Olarak

End öğesi (AssociationSet öğesinin alt öğesi olarak), temel alınan veritabanındaki yabancı anahtar kısıtlamasının bir ucundaki tabloyu belirtir.

Bir End öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda, Bir AssociationSet öğesinin alt öğesi olduğunda End öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Entityset Evet Yabancı anahtar kısıtlamasının sonundaki SSDL varlık kümesinin adı.
Rol Hayır İlgili Association öğesinin bir End öğesinde belirtilen Rol özniteliklerinden birinin değeri.

Dekont

End öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, iki End öğesi içeren bir AssociationSet öğesine sahip bir EntityContainer öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depolama şeması tanım dilindeki (SSDL) EntityContainer öğesi, bir Entity Framework uygulamasında temel alınan veri kaynağının yapısını açıklar: SSDL varlık kümeleri (EntitySet öğelerinde tanımlanır), veritabanındaki tabloları temsil eder, SSDL varlık türleri (EntityType öğelerinde tanımlanır) bir tablodaki satırları temsil eder ve ilişkilendirme kümeleri (AssociationSet öğelerinde tanımlanır) veritabanındaki yabancı anahtar kısıtlamalarını temsil eder. Depolama modeli varlık kapsayıcısı, EntityContainerMapping öğesi aracılığıyla kavramsal model varlık kapsayıcısına eşlenir.

EntityContainer öğesi sıfır veya bir Belge öğesine sahip olabilir. Belge öğesi varsa, diğer tüm alt öğelerden önce gelmelidir.

Bir EntityContainer öğesi aşağıdaki alt öğelerden sıfır veya daha fazlasına sahip olabilir (listelenen sırayla):

  • Entityset
  • Associationset
  • Ek açıklama öğeleri

Geçerli Öznitelikler

Aşağıdaki tabloda EntityContainer öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet Varlık kapsayıcısının adı. Bu ad nokta (.) içeremez.

Dekont

EntityContainer öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, iki varlık kümesini ve bir ilişkilendirme kümesini tanımlayan bir EntityContainer öğesi gösterilmektedir. Varlık türü ve ilişkilendirme türü adlarının kavramsal model ad alanı adıyla nitelendiğini unutmayın.

 <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 Öğesi (SSDL)

Depolama şeması tanım dilindeki (SSDL) EntitySet öğesi, temel alınan veritabanındaki bir tabloyu veya görünümü temsil eder. SSDL'deki EntityType öğesi, tablodaki veya görünümdeki bir satırı temsil eder. EntitySet öğesinin EntityType özniteliği, SSDL varlık kümesindeki satırları temsil eden belirli SSDL varlık türünü belirtir. BIR CSDL varlık kümesi ile SSDL varlık kümesi arasındaki eşleme bir EntitySetMapping öğesinde belirtilir.

EntitySet öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir öğe)
  • DefiningQuery (sıfır veya bir öğe)
  • Ek açıklama öğeleri

Geçerli Öznitelikler

Aşağıdaki tabloda EntitySet öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Dekont

Bazı öznitelikler (burada listelenmeyen) mağaza diğer adıyla nitelenebilir. Bu öznitelikler, modeli güncelleştirirken Model Güncelleştirme Sihirbazı tarafından kullanılır.

Öznitelik Adı Gerekli Değer
Ad Evet Varlık kümesinin adı.
Entitytype Evet Varlık kümesinin örnekleri içerdiği varlık türünün tam adı.
Şema Hayır Veritabanı şeması.
Table Hayır Veritabanı tablosu.

Dekont

EntitySet öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte iki EntitySet öğesi ve bir AssociationSet öğesi olan bir EntityContainer öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depolama şema tanımı dilindeki (SSDL) EntityType öğesi, temel alınan veritabanının bir tablosundaki veya görünümündeki bir satırı temsil eder. SSDL'deki EntitySet öğesi, satırların oluştuğu tabloyu veya görünümü temsil eder. EntitySet öğesinin EntityType özniteliği, SSDL varlık kümesindeki satırları temsil eden belirli SSDL varlık türünü belirtir. BIR SSDL varlık türü ile CSDL varlık türü arasındaki eşleme bir EntityTypeMapping öğesinde belirtilir.

EntityType öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir öğe)
  • Anahtar (sıfır veya bir öğe)
  • Ek açıklama öğeleri

Geçerli Öznitelikler

Aşağıdaki tabloda EntityType öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet Varlık türünün adı. Bu değer genellikle varlık türünün bir satırı temsil ettiği tablonun adıyla aynıdır. Bu değer nokta (.) içeremez.

Dekont

EntityType öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte iki özelliğe sahip bir EntityType öğesi gösterilmektedir:

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

İşlev Öğesi (SSDL)

Depo şema tanımı dilindeki İşlev öğesi (SSDL), temel alınan veritabanında var olan bir saklı yordamı belirtir.

İşlev öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Parametre (sıfır veya daha fazla)
  • CommandText (sıfır veya bir)
  • ReturnType (sıfır veya daha fazla)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

bir işlev için dönüş türü ReturnType öğesi veya ReturnType özniteliğiyle belirtilmelidir (aşağıya bakın), ancak her ikisini birden belirtmemelidir.

Depolama modelinde belirtilen saklı yordamlar bir uygulamanın kavramsal modeline aktarılabilir. Daha fazla bilgi için bkz . Saklı Yordamlarla Sorgulama. İşlev öğesi, depolama modelinde özel işlevleri tanımlamak için de kullanılabilir.  

Geçerli Öznitelikler

Aşağıdaki tabloda İşlev öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Dekont

Bazı öznitelikler (burada listelenmeyen) mağaza diğer adıyla nitelenebilir. Bu öznitelikler, modeli güncelleştirirken Model Güncelleştirme Sihirbazı tarafından kullanılır.

Öznitelik Adı Gerekli Değer
Ad Evet Saklı yordamın adı.
Returntype Hayır Saklı yordamın dönüş türü.
Topla Hayır Saklı yordam bir toplama değeri döndürürse True ; aksi takdirde False.
Yerleşik Hayır İşlev yerleşikbir 1 işleviyse true; aksi takdirde False.
StoreFunctionName Hayır Saklı yordamın adı.
NiladicFunction Hayır İşlev sıfırdan bir 2 işleviyse true; Aksi takdirde False.
IsComposable Hayır İşlev birleştirilebilir3 işleviyse True; Aksi takdirde False.
ParameterTypeSemantics Hayır İşlev aşırı yüklemelerini çözümlemek için kullanılan tür semantiğini tanımlayan numaralandırma. Numaralandırma, işlev tanımı başına sağlayıcı bildiriminde tanımlanır. Varsayılan değer AllowImplicitConversion'dır.
Şema Hayır Saklı yordamın tanımlandığı şemanın adı.

1 Yerleşik işlev, veritabanında tanımlanan bir işlevdir. Depolama modelinde tanımlanan işlevler hakkında bilgi için bkz. CommandText Öğesi (SSDL).

2 Sıfırdan küçük işlev, parametre kabul eden ve çağrıldığında parantez gerektirmeyen bir işlevdir.

3 Bir işlevin çıkışı diğer işlevin girişi olabilirse iki işlev birleştirilebilir.

Dekont

İşlev öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte UpdateOrderQuantity saklı yordamına karşılık gelen bir İşlev öğesi gösterilmektedir. Saklı yordam iki parametre kabul eder ve bir değer döndürmez.

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

Anahtar Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) Key öğesi, temel alınan veritabanındaki bir tablonun birincil anahtarını temsil eder. Anahtar , tablodaki bir satırı temsil eden EntityType öğesinin alt öğesidir. Birincil anahtar, Key öğesinde EntityType öğesinde tanımlanan bir veya daha fazla Özellik öğesine başvurularak tanımlanır.

Key öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • PropertyRef (bir veya daha fazla)
  • Ek açıklama öğeleri

Anahtar öğesi için hiçbir öznitelik geçerli değildir.

Örnek

Aşağıdaki örnekte, bir özelliğe başvuran anahtara sahip bir EntityType öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) OnDelete öğesi, yabancı anahtar kısıtlamaya katılan bir satır silindiğinde veritabanı davranışını yansıtır. Eylem Art Arda Ayarla olarak ayarlanırsa, silinen bir satıra başvuran satırlar da silinir. Eylem Yok olarak ayarlanırsa, silinen bir satıra başvuran satırlar da silinmez. OnDelete öğesi, Bir End öğesinin alt öğesidir.

OnDelete öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda, OnDelete öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Eylem Evet Art arda veya Hiçbiri. (Değer Kısıtlı geçerli ancak Hiçbiri ile aynı davranışa sahip.)

Dekont

OnDelete öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasını tanımlayan bir Association öğesi gösterilmektedir. OnDelete öğesi, Müşteriler tablosundaki satır silinirse Orders tablosundaki belirli bir satıra başvuran tüm satırların silineceğini gösterir.

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

Parametre Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) Parametre öğesi, veritabanındaki bir saklı yordam için parametreleri belirten İşlev öğesinin alt öğesidir.

Parameter öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • Belgeler (sıfır veya bir)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda Parameter öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet Parametrenin adı.
Tür Evet Parametre türü.
Modu Hayır In, Out veya InOut parametresinin giriş, çıkış veya giriş/çıkış parametresi olmasına bağlı olarak.
Maxlength Hayır Parametrenin uzunluk üst sınırı.
Hassas Hayır Parametresinin duyarlığı.
Ölçek Hayır Parametresinin ölçeği.
SRID Hayır Uzamsal Sistem Başvuru Tanımlayıcısı. Yalnızca uzamsal tür parametreleri için geçerlidir. Daha fazla bilgi için bkz . SRID ve SRID (SQL Server).

Dekont

Parametre öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, giriş parametrelerini belirten iki Parametre öğesine sahip bir İşlev öğesi gösterilmektedir:

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

Asıl Öğe (SSDL)

Depo şeması tanım dilindeki (SSDL) Principal öğesi, yabancı anahtar kısıtlamasının (başvuru kısıtlaması olarak da adlandırılır) asıl sonunu tanımlayan ReferentialConstraint öğesinin alt öğesidir. Principal öğesi, tablodaki başka bir sütun (veya sütunlar) tarafından başvuruda bulunan birincil anahtar sütununu (veya sütunlarını) belirtir. PropertyRef öğeleri hangi sütunlara başvurulacağını belirtir. Dependent öğesi, Principal öğesinde belirtilen birincil anahtar sütunlarına başvuran sütunları belirtir.

Principal öğesi aşağıdaki alt öğelere sahip olabilir (listelenen sırayla):

  • PropertyRef (bir veya daha fazla)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

Aşağıdaki tabloda Principal öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Rol Evet İlgili End öğesinin Role özniteliğiyle (kullanılıyorsa) aynı değer; aksi takdirde başvuruda bulunan sütunu içeren tablonun adı.

Dekont

Principal öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasına katılan sütunları belirtmek için ReferentialConstraint öğesini kullanan bir Association öğesi gösterilmektedir. Principal öğesi, kısıtlamanın asıl sonu olarak Customer tablosunun CustomerId sütununu belirtir.

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

Özellik Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) Property öğesi, temel alınan veritabanındaki bir tablodaki sütunu temsil eder. Özellik öğeleri, bir tablodaki satırları temsil eden EntityType öğelerinin alt öğeleridir. Bir EntityType öğesinde tanımlanan her Property öğesi bir sütunu temsil eder.

Bir Özellik öğesinin alt öğesi olamaz.

Geçerli Öznitelikler

Aşağıdaki tabloda Property öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet İlgili sütunun adı.
Tür Evet Karşılık gelen sütunun türü.
Nullable Hayır İlgili sütunun null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False .
DefaultValue Hayır İlgili sütunun varsayılan değeri.
Maxlength Hayır İlgili sütunun uzunluk üst sınırı.
FixedLength Hayır Karşılık gelen sütun değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır İlgili sütunun duyarlığı.
Ölçek Hayır İlgili sütunun ölçeği.
Unicode Hayır İlgili sütun değerinin Unicode dizesi olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Harmanlama Hayır Veri kaynağında kullanılacak harmanlama sırasını belirten bir dize.
SRID Hayır Uzamsal Sistem Başvuru Tanımlayıcısı. Yalnızca uzamsal türlerin özellikleri için geçerlidir. Daha fazla bilgi için bkz . SRID ve SRID (SQL Server).
StoreGeneratedPattern Hayır Yok, Kimlik (karşılık gelen sütun değeri veritabanında oluşturulan bir kimlikse) veya Hesaplanan (ilgili sütun değeri veritabanında hesaplanmışsa). RowType özellikleri için Geçerli Değil.

Dekont

Property öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, iki alt Özellik öğesine sahip bir EntityType öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) PropertyRef öğesi, özelliğin aşağıdaki rollerden birini gerçekleştireceğini belirtmek için bir EntityType öğesinde tanımlanan özelliğe başvurur:

  • EntityType'ın temsil ettiği tablonun birincil anahtarının parçası olun. Birincil anahtarı tanımlamak için bir veya daha fazla PropertyRef öğesi kullanılabilir. Daha fazla bilgi için bkz. Anahtar öğesi.
  • Başvuru kısıtlamasının bağımlı veya asıl ucu olun. Daha fazla bilgi için bkz. ReferentialConstraint öğesi.

PropertyRef öğesi yalnızca aşağıdaki alt öğelere sahip olabilir:

  • Belgeler (sıfır veya bir)
  • Ek açıklama öğeleri

Geçerli Öznitelikler

Aşağıdaki tabloda PropertyRef öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad Evet Başvuruda bulunan özelliğin adı.

Dekont

PropertyRef öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler CSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, bir EntityType öğesinde tanımlanan bir özelliğe başvurarak birincil anahtarı tanımlamak için kullanılan PropertyReföğesi gösterilmektedir.

 <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 Öğesi (SSDL)

Depolama şeması tanım dilindeki (SSDL) ReferentialConstraint öğesi, temel alınan veritabanındaki yabancı anahtar kısıtlamasını (bilgi tutarlılığı kısıtlaması olarak da adlandırılır) temsil eder. Kısıtlamanın asıl ve bağımlı uçları sırasıyla Sorumlu ve Bağımlı alt öğeleri tarafından belirtilir. Asıl ve bağımlı uçlara katılan sütunlara PropertyRef öğeleriyle başvurulur.

ReferentialConstraint öğesi, Association öğesinin isteğe bağlı bir alt öğesidir. Association öğesinde belirtilen yabancı anahtar kısıtlamasını eşlemek için bir ReferentialConstraint öğesi kullanılmazsa, bunu yapmak için bir AssociationSetMapping öğesi kullanılmalıdır.

ReferentialConstraint öğesi aşağıdaki alt öğelere sahip olabilir:

  • Belgeler (sıfır veya bir)
  • Sorumlu (tam olarak bir)
  • Bağımlı (tam olarak bir)
  • Ek açıklama öğeleri (sıfır veya daha fazla)

Geçerli Öznitelikler

ReferentialConstraint öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnekte, FK_CustomerOrders yabancı anahtar kısıtlamasına katılan sütunları belirtmek için ReferentialConstraint öğesini kullanan bir Association öğesi gösterilmektedir:

 <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) ReturnType öğesi, İşlev öğesinde tanımlanan bir işlevin dönüş türünü belirtir. İşlev dönüş türü bir ReturnType özniteliğiyle de belirtilebilir.

bir işlevin dönüş türü Type özniteliği veya ReturnType öğesiyle belirtilir.

ReturnType öğesi aşağıdaki alt öğelere sahip olabilir:

  • CollectionType (bir)

Dekont

ReturnType öğesine herhangi bir sayıda ek açıklama özniteliği (özel XML öznitelikleri) uygulanabilir. Ancak, özel öznitelikler SSDL için ayrılmış herhangi bir XML ad alanına ait olmayabilir. İki özel özniteliğin tam adları aynı olamaz.

Örnek

Aşağıdaki örnek, bir satır koleksiyonu döndüren bir İşlev kullanır.

   <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 Öğesi (SSDL)

Depo şema tanımı dilindeki (SSDL) RowType öğesi, adlandırılmamış bir yapıyı, depoda tanımlanan bir işlev için dönüş türü olarak tanımlar.

RowType öğesi CollectionType öğesinin alt öğesidir:

RowType öğesi aşağıdaki alt öğelere sahip olabilir:

  • Özellik (bir veya daha fazla)

Örnek

Aşağıdaki örnekte, işlevin bir satır koleksiyonu döndürdüğünü belirtmek için CollectionType öğesini kullanan bir store işlevi gösterilmektedir (RowType öğesinde belirtildiği gibi).

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

Şema Öğesi (SSDL)

Depolama şema tanımı dilindeki (SSDL) Schema öğesi, depolama modeli tanımının kök öğesidir. Depolama modelini oluşturan nesneler, işlevler ve kapsayıcılar için tanımlar içerir.

Schema öğesi aşağıdaki alt öğelerden sıfır veya daha fazlasını içerebilir:

  • İlişki
  • Entitytype
  • Entitycontainer
  • Function

Schema öğesi, bir depolama modelindeki varlık türü ve ilişkilendirme nesnelerinin ad alanını tanımlamak için Namespace özniteliğini kullanır. Bir ad alanı içinde, hiçbir iki nesne aynı ada sahip olamaz.

Depolama modeli ad alanı, Schema öğesinin XML ad alanından farklıdır. Depolama modeli ad alanı (Namespace özniteliği tarafından tanımlandığı gibi), varlık türleri ve ilişkilendirme türleri için mantıksal bir kapsayıcıdır. Schema öğesinin XML ad alanı (xmlns özniteliğiyle gösterilir), Schema öğesinin alt öğeleri ve öznitelikleri için varsayılan ad alanıdır. Formun https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl XML ad alanları (burada YYYY ve MM sırasıyla bir yıl ve ayı temsil eder) SSDL için ayrılmıştır. Özel öğeler ve öznitelikler bu forma sahip ad alanında olamaz.

Geçerli Öznitelikler

Aşağıdaki tabloda, Schema öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Ad alanı Evet Depolama modelinin ad alanı. Ad Alanı özniteliğinin değeri, bir türün tam adını oluşturmak için kullanılır. Örneğin, Customer adlı bir EntityType ExampleModel.Store ad alanındaysa, EntityType'ın tam adı ExampleModel.Store.Customer olur.
Aşağıdaki dizeler Namespace özniteliği için değer olarak kullanılamaz: System, Transient veya Edm. Namespace özniteliğinin değeri, CSDL Schema öğesindeki Namespace özniteliğinin değeriyle aynı olamaz.
Alias Hayır Ad alanı adı yerine kullanılan bir tanımlayıcı. Örneğin, Customer adlı bir EntityType ExampleModel.Store ad alanındaysa ve Alias özniteliğinin değeri Depolama Model ise, EntityType'ın tam adı olarak Depolama Model.Customer kullanabilirsiniz.
Sağlayıcı Evet Veri sağlayıcısı.
ProviderManifestToken Evet Sağlayıcıya döndürülecek sağlayıcı bildirimini gösteren belirteç. Belirtecin biçimi tanımlanmadı. Belirtecin değerleri sağlayıcı tarafından tanımlanır. SQL Server sağlayıcı bildirim belirteçleri hakkında bilgi için bkz. Entity Framework için SqlClient.

Örnek

Aşağıdaki örnekte Bir EntityContainer öğesi, iki EntityType öğesi ve bir Association öğesi içeren bir Schema öğesi gösterilmektedir.

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

Ek Açıklama Öznitelikleri

Depolama şeması tanım dilindeki (SSDL) ek açıklama öznitelikleri, depolama modelindeki öğeler hakkında ek meta veriler sağlayan depolama modelindeki özel XML öznitelikleridir. Geçerli XML yapısına ek olarak, ek açıklama öznitelikleri için aşağıdaki kısıtlamalar geçerlidir:

  • Ek açıklama öznitelikleri SSDL için ayrılmış hiçbir XML ad alanında olmamalıdır.
  • İki ek açıklama özniteliğinin tam adları aynı olmamalıdır.

Belirli bir SSDL öğesine birden fazla ek açıklama özniteliği uygulanabilir. Ek açıklama öğelerinde bulunan meta verilere çalışma zamanında System.Data.Metadata.Edm ad alanındaki sınıflar kullanılarak erişilebilir.

Örnek

Aşağıdaki örnekte, OrderId özelliğine ek açıklama özniteliği uygulanmış bir EntityType öğesi gösterilmektedir. Örnekte, EntityType öğesine eklenen bir ek açıklama öğesi de gösterilir.

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

Ek Açıklama Öğeleri (SSDL)

Depolama şeması tanım dilindeki (SSDL) ek açıklama öğeleri, depolama modeliyle ilgili ek meta veriler sağlayan depolama modelindeki özel XML öğeleridir. Geçerli XML yapısına ek olarak, ek açıklama öğeleri için aşağıdaki kısıtlamalar geçerlidir:

  • Ek açıklama öğeleri SSDL için ayrılmış hiçbir XML ad alanında olmamalıdır.
  • İki ek açıklama öğesinin tam adları aynı olmamalıdır.
  • Ek açıklama öğeleri, belirli bir SSDL öğesinin diğer tüm alt öğelerinden sonra görünmelidir.

Birden fazla ek açıklama öğesi, belirli bir SSDL öğesinin alt öğesi olabilir. .NET Framework sürüm 4'den başlayarak, ek açıklama öğelerinde yer alan meta verilere çalışma zamanında System.Data.Metadata.Edm ad alanındaki sınıflar kullanılarak erişilebilir.

Örnek

Aşağıdaki örnekte, ek açıklama öğesi (CustomElement) içeren bir EntityType öğesi gösterilmektedir. Örnekte, OrderId özelliğine uygulanan bir ek açıklama özniteliği de gösterilir.

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

Modeller (SSDL)

Mağaza şema tanımı dilindeki (SSDL) modeller, Özellik öğelerinde belirtilen sütun türlerindeki kısıtlamaları temsil eder. Modeller, Özellik öğelerinde XML öznitelikleri olarak uygulanır.

Aşağıdaki tabloda SSDL'de desteklenen modeller açıklanmaktadır:

Tarafı Tanım
Harmanlama Özelliğin değerlerinde karşılaştırma ve sıralama işlemleri gerçekleştirirken kullanılacak harmanlama sırasını (veya sıralama sırasını) belirtir.
FixedLength Sütun değerinin uzunluğunun değişip değişemeyeceğini belirtir.
Maxlength Sütun değerinin uzunluk üst sınırını belirtir.
Hassas Ondalık türündeki özellikler için, özellik değerinin sahip olabileceği basamak sayısını belirtir. Time, DateTime ve DateTimeOffset türündeki özellikler için, sütun değerinin saniyenin kesirli bölümü için basamak sayısını belirtir.
Ölçek Sütun değerinin ondalık noktasının sağındaki basamak sayısını belirtir.
Unicode Sütun değerinin Unicode olarak depolanıp depolanmadığını gösterir.