CSDL Belirtimi

Kavramsal şema tanım dili (CSDL), veri temelli bir uygulamanın kavramsal modelini oluşturan varlıkları, ilişkileri ve işlevleri açıklayan XML tabanlı bir dildir. Bu kavramsal model Entity Framework veya WCF Veri Hizmetleri tarafından kullanılabilir. CSDL ile açıklanan meta veriler, Entity Framework tarafından kavramsal modelde tanımlanan varlıkları ve ilişkileri bir veri kaynağıyla eşlemek için kullanılır. Daha fazla bilgi için bkz . SSDL Belirtimi ve MSL Belirtimi.

CSDL, Entity Framework'ün Varlık Veri Modeli uygulamasıdır.

Entity Framework uygulamasında kavramsal model meta verileri bir .csdl dosyasından (CSDL ile yazılmış) System.Data.Metadata.Edm.EdmItemCollection örneğine yüklenir ve System.Data.Metadata.Edm.MetadataWorkspace sınıfındaki yöntemler kullanılarak erişilebilir. Entity Framework, kavramsal modele karşı sorguları veri kaynağına özgü komutlara çevirmek için kavramsal model meta verilerini kullanır.

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

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

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

association öğesi iki varlık türü arasındaki ilişkiyi tanımlar. İlişki, ilişkide yer alan varlık türlerini ve ilişkinin her bir ucundaki varlık türlerinin olası sayısını belirtmelidir ve bu da çokluk olarak bilinir. İlişkilendirme sonunun çokluğu bir (1), sıfır veya bir (0..1) veya çok (*) değerine sahip olabilir. Bu bilgiler iki alt Uç öğesinde belirtilir.

İlişkilendirmenin bir ucundaki varlık türü örneklerine, bir varlık türünde kullanıma sunulduklarında gezinti özellikleri veya yabancı anahtarlar aracılığıyla erişilebilir.

Bir uygulamada ilişki örneği, varlık türlerinin örnekleri arasındaki belirli bir ilişkiyi temsil eder. İlişkilendirme örnekleri bir ilişkilendirme kümesinde mantıksal olarak gruplandırılır.

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

  • Belgeler (sıfır veya bir öğe)
  • Uç (tam olarak 2 öğe)
  • ReferentialConstraint (sıfır veya bir öğe)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğe)

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet İlişkilendirmenin adı.

 

Dekont

Association öğ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, yabancı anahtarlar Müşteri ve Sipariş varlık türlerinde gösterilmediğinde CustomerOrders ilişkisini tanımlayan bir Association öğesi gösterilmektedir. İlişkilendirmenin her Sonu için Çokluk değerleri, bir Müşteri ile çok sayıda Siparişin ilişkilendirilebileceğini, ancak bir Siparişle yalnızca bir Müşterinin ilişkilendirilebileceğini gösterir. Ayrıca OnDelete öğesi, belirli bir Müşteriyle ilgili olan ve ObjectContext'e yüklenmiş olan tüm Siparişlerin, Müşteri silinirse silineceğini gösterir.

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

 

Aşağıdaki örnekte, Müşteri ve Sipariş varlık türlerinde yabancı anahtarlar kullanıma sunulduğunda CustomerOrders ilişkilendirmesini tanımlayan bir Association öğesi gösterilmektedir. Yabancı anahtarlar kullanıma sunulduğunda varlıklar arasındaki ilişki bir ReferentialConstraint öğesiyle yönetilir. Bu ilişkilendirmeyi veri kaynağına eşlemek için karşılık gelen bir AssociationSetMapping öğesi gerekli değildir.

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

Kavramsal şema tanım dilindeki (CSDL) AssociationSet öğesi, aynı türdeki ilişkilendirme örnekleri için mantıksal bir kapsayıcıdır. İlişki kümesi, bir veri kaynağına eşlenebilmeleri için ilişkilendirme örneklerini gruplandırma için bir tanım sağlar.  

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

  • Belgeler (sıfır veya bir öğeye izin verilir)
  • Uç (tam olarak iki öğe gereklidir)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğeye izin verilir)

association özniteliği, bir ilişkilendirme kümesinin içerdiği ilişkilendirme türünü belirtir. İlişkilendirme kümesinin uçlarını oluşturan varlık kümeleri tam olarak iki alt öğesiyle belirtilir.

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Varlık kümesinin adı. Name özniteliğinin değeri Association özniteliğinin değeriyle aynı olamaz.
Derneği Evet İlişkilendirme kümesinin örneklerini içerdiği ilişkilendirmenin tam adı. İlişkilendirme, ilişkilendirme kümesiyle aynı ad alanında olmalıdır.

 

Dekont

AssociationSet öğ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 AssociationSet öğesine sahip bir EntityContainer öğesi gösterilmektedir:

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

Kavramsal şema tanım dilindeki (CSDL) CollectionType öğesi, işlev parametresinin veya işlev dönüş türünün bir koleksiyon olduğunu belirtir. CollectionType öğesi Parameter öğesinin veya ReturnType (İşlev) öğesinin alt öğesi olabilir. Koleksiyon türü Type özniteliği veya aşağıdaki alt öğelerden biri kullanılarak belirtilebilir:

  • CollectionType
  • ReferenceType
  • Rowtype
  • Typeref

Dekont

Bir model, koleksiyon türünün hem Type özniteliği hem de bir alt öğeyle belirtildiğini doğrulamaz.

 

Geçerli Öznitelikler

Aşağıdaki tabloda CollectionType öğesine uygulanabilecek öznitelikler açıklanmaktadır. DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode ve Collation özniteliklerinin yalnızca EDMSimpleType koleksiyonları için geçerli olduğunu unutmayın.

Öznitelik Adı Gerekli Değer
Türü Hayır Koleksiyonun türü.
Nullable Hayır Özelliğin null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False .
[!NOT]
> CSDL v1'de karmaşık tür özelliğine sahip Nullable="False"olmalıdır.
DefaultValue Hayır Özelliğinin varsayılan değeri.
Maxlength Hayır Özellik değerinin uzunluk üst sınırı.
FixedLength Hayır Özellik değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır Özellik değerinin duyarlığı.
Ölçek Hayır Özellik değerinin ölçeği.
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)
Unicode Hayır Özellik 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.

 

Dekont

CollectionType öğ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, işlevin Person varlık türleri koleksiyonunu (ElementType özniteliğiyle belirtildiği gibi) döndürmesini belirtmek için CollectionType öğesini kullanan model tanımlı bir işlev gösterilmektedir.

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

 

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

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

 

Aşağıdaki örnekte, işlevin Department varlık türleri koleksiyonu olarak parametre olarak kabul ettiğini belirtmek için CollectionType öğesini kullanan model tanımlı bir işlev gösterilmektedir.

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

ComplexType öğesi, EdmSimpleType özelliklerinden veya diğer karmaşık türlerden oluşan bir veri yapısını tanımlar.  Karmaşık tür, bir varlık türünün veya başka bir karmaşık türün özelliği olabilir. Karmaşık tür, karmaşık bir türün verileri tanımladığı varlık türüne benzer. Ancak karmaşık türler ile varlık türleri arasında bazı önemli farklar vardır:

  • Karmaşık türlerin kimlikleri (veya anahtarları) yoktur ve bu nedenle bağımsız olarak mevcut olamaz. Karmaşık türler yalnızca varlık türlerinin veya diğer karmaşık türlerin özellikleri olarak bulunabilir.
  • Karmaşık türler ilişkilendirmelere katılamaz. İlişkilendirmenin hiçbiri karmaşık bir tür olamaz ve bu nedenle karmaşık türler için gezinti özellikleri tanımlanamaz.
  • Karmaşık türün skaler özellikleri null olarak ayarlansa da, karmaşık tür özelliğinin null değeri olamaz.

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

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

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

Öznitelik Adı Gerekli Değer
Ad Evet Karmaşık türün adı. Karmaşık türün adı, model kapsamındaki başka bir karmaşık türün, varlık türünün veya ilişkilendirmenin adıyla aynı olamaz.
BaseType Hayır Tanımlanan karmaşık türün temel türü olan başka bir karmaşık türün adı.
[!NOT]
> Bu öznitelik CSDL v1'de geçerli değildir. Karmaşık türler için devralma, bu sürümde desteklenmez.
Abstract Hayır Karmaşık türün soyut bir tür olup olmadığına bağlı olarak True veya False (varsayılan değer).
[!NOT]
> Bu öznitelik CSDL v1'de geçerli değildir. Bu sürümdeki karmaşık türler soyut türler olamaz.

 

Dekont

ComplexType öğ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, EdmSimpleType özellikleri StreetAddress, City, StateOrProvince, Country ve PostalCode olan karmaşık bir tür (Address) gösterilmektedir.

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

 

Karmaşık türDeki Adresi (yukarıda) bir varlık türünün özelliği olarak tanımlamak için, varlık türü tanımında özellik türünü bildirmeniz gerekir. Aşağıdaki örnekte Address özelliği bir varlık türünde (Publisher) karmaşık bir tür olarak gösterilmektedir:

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

Kavramsal şema tanım dilindeki (CSDL) DefiningExpression öğesi, kavramsal modelde bir işlevi tanımlayan bir Entity SQL ifadesi içerir.  

Dekont

Doğrulama amacıyla, bir DefiningExpression öğesi rastgele içerik içerebilir. Ancak, bir DefiningExpression öğesi geçerli Entity SQL içermiyorsa Entity Framework çalışma zamanında bir özel durum oluşturur.

 

Geçerli Öznitelikler

DefiningExpression öğ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 kitabın yayımlanmasının ardından yıl sayısını döndüren bir işlev tanımlamak için DefineExpression öğesi kullanılmaktadır. DefiningExpression öğesinin içeriği Entity SQL'de yazılır.

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

 

 

Bağımlı Öğe (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Dependent öğesi, ReferentialConstraint öğesinin alt öğesidir ve başvuru kısıtlamasının bağımlı sonunu tanımlar. ReferentialConstraint öğesi, ilişkisel veritabanındaki bilgi tutarlılığı kısıtlamasına benzer işlevleri tanımlar. Veritabanı tablosundaki bir sütunun (veya sütunların) başka bir tablonun birincil anahtarına başvurabilmesiyle aynı şekilde, varlık türündeki bir özellik (veya özellikler) başka bir varlık türünün varlık anahtarına başvurabilir. Başvurulan varlık türü, kısıtlamanın asıl sonu olarak adlandırılır. Asıl uca başvuran varlık türü, kısıtlamanın bağımlı sonu olarak adlandırılır. PropertyRef öğeleri, asıl uca hangi anahtarların başvuracağını belirtmek için kullanılır.

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Rol Evet İlişkilendirmenin bağımlı ucundaki varlık türünün 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, PublishedBy ilişkisinin tanımının bir parçası olarak kullanılan bir ReferentialConstraint öğesi gösterilmektedir. Book varlık türünün PublisherId özelliği, bilgi kısıtlamasının bağımlı sonunu oluşturur.

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

 

 

Belge Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Belgeler öğesi, üst öğede tanımlanan bir nesne hakkında bilgi sağlamak için kullanılabilir. .edmx dosyasında, Belgeler öğesi EF Tasarım Aracı tasarım yüzeyinde nesne olarak görünen bir öğenin alt öğesi olduğunda (varlık, ilişkilendirme veya özellik gibi), Belgeler öğesinin içeriği nesnenin Visual Studio Özellikleri penceresinde görüntülenir.

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)
  • Ek açıklama öğeleri. (sıfır veya daha fazla öğ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. Aşağıdaki kod parçacığı bir .edmx dosyasının CSDL içeriğinde yer aldıysa, varlık türüne tıkladığınızda Summary ve LongDescription öğelerinin içeriği Visual Studio ÖzellikleriCustomer penceresinde görünür.

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

Kavramsal şema tanım dilindeki (CSDL) End öğesi Association öğesinin veya AssociationSet öğesinin alt öğesi olabilir. Her durumda End öğesinin rolü farklıdır ve geçerli öznitelikler farklıdır.

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

End öğesi (Association öğesinin alt öğesi olarak), bir ilişkilendirmenin bir ucundaki varlık türünü ve bir ilişkilendirmenin sonunda var olabilecek varlık türü örneklerinin sayısını tanımlar. İlişkilendirme uçları bir ilişkilendirmenin parçası olarak tanımlanır; bir ilişkilendirmenin tam olarak iki ilişkisi bitmelidir. İlişkilendirmenin bir ucundaki varlık türü örneklerine, bir varlık türünde kullanıma sunulduklarında gezinti özellikleri veya yabancı anahtarlar aracılığıyla erişilebilir.  

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 İlişkilendirmenin bir ucundaki varlık türünün adı.
Rol Hayır İlişkilendirme sonu için bir ad. Ad sağlanmazsa ilişkilendirme ucundaki varlık türünün adı kullanılır.
Çokluk Evet 1, 0..1 veya * ilişkilendirmenin sonunda olabilecek varlık türü örneklerinin sayısına bağlı olarak.
1 , ilişkilendirme sonunda tam olarak bir varlık türü örneğinin bulunduğunu gösterir.
0..1 , ilişkilendirme sonunda sıfır veya bir varlık türü örneği olduğunu gösterir.
* ilişkilendirme sonunda sıfır, bir veya daha fazla varlık türü örneğinin bulunduğ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 CustomerOrders ilişkilendirmesini tanımlayan bir Association öğesi gösterilmektedir. İlişkilendirmenin her Sonu için Çokluk değerleri, bir Müşteri ile çok sayıda Siparişin ilişkilendirilebileceğini, ancak bir Siparişle yalnızca bir Müşterinin ilişkilendirilebileceğini gösterir. Ayrıca OnDelete öğesi, belirli bir Müşteri ile ilgili olan ve ObjectContext'e yüklenmiş olan tüm Siparişlerin, Müşteri silinirse silineceğini gösterir.

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

 

End Öğesi AssociationSet Öğesinin Alt Öğesi Olarak

End öğesi ilişkilendirme kümesinin bir ucunu belirtir. AssociationSet öğesi iki End öğesi içermelidir. Bir End öğesinde yer alan bilgiler, bir ilişki kümesini bir veri kaynağına eşlemek için kullanılır.

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

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

Dekont

Ek açıklama öğeleri diğer tüm alt öğelerden sonra görünmelidir. Ek açıklama öğelerine yalnızca CSDL v2 ve sonraki sürümlerde izin verilir.

 

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 Üst AssociationSet öğesinin bir ucunu tanımlayan EntitySet öğesinin adı. EntitySet öğesi üst AssociationSet öğesiyle aynı varlık kapsayıcısında tanımlanmalıdır.
Rol Hayır İlişkilendirme kümesi sonunun adı. Rol özniteliği kullanılmazsa, ilişkilendirme kümesi sonunun adı varlık kümesinin adı olur.

 

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, her birinde iki End öğesi olan iki AssociationSet öğesine sahip bir EntityContainer öğesi gösterilmektedir:

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

Kavramsal şema tanım dilindeki (CSDL) EntityContainer öğesi varlık kümeleri, ilişkilendirme kümeleri ve işlev içeri aktarmaları için mantıksal bir kapsayıcıdır. Kavramsal model varlık kapsayıcısı, EntityContainerMapping öğesi aracılığıyla bir depolama modeli varlık kapsayıcısına eşlenir. Depolama modeli varlık kapsayıcısı veritabanının yapısını açıklar: varlık kümeleri tabloları açıklar, ilişkilendirme kümeleri yabancı anahtar kısıtlamalarını açıklar ve işlev içeri aktarmaları bir veritabanındaki saklı yordamları açıklar.

EntityContainer öğesi sıfır veya bir Belge öğesine sahip olabilir. Bir Documentation öğesi varsa, tüm EntitySet, AssociationSet ve FunctionImport öğelerinin önünde olmalıdır.

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

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

Bir EntityContainer öğesini, aynı ad alanındaki başka bir EntityContainer'ın içeriğini içerecek şekilde genişletebilirsiniz. Başka bir EntityContainer'ın içeriğini eklemek için, başvuran EntityContainer öğesinde Extends özniteliğinin değerini eklemek istediğiniz EntityContainer öğesinin adına ayarlayın. Dahil edilen EntityContainer öğesinin tüm alt öğeleri, başvuran EntityContainer öğesinin alt öğeleri olarak değerlendirilir.

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Varlık kapsayıcısının adı.
Genişletir Hayır Aynı ad alanındaki başka bir varlık kapsayıcısının adı.

 

Dekont

EntityContainer öğ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 üç varlık kümesini ve iki ilişkilendirme kümesini tanımlayan bir EntityContainer öğesi gösterilmektedir.

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

Kavramsal şema tanım dilindeki EntitySet öğesi, bir varlık türünün örnekleri ve bu varlık türünden türetilen herhangi bir türdeki örnekler için mantıksal bir kapsayıcıdır. Varlık türü ile varlık kümesi arasındaki ilişki, ilişkisel veritabanındaki bir satır ve tablo arasındaki ilişkiye benzer. Bir satır gibi varlık türü de ilişkili bir veri kümesini tanımlar ve tablo gibi varlık kümesi de bu tanımın örneklerini içerir. Varlık kümesi, varlık türü örneklerini gruplandırmak için bir yapı sağlar, böylece bir veri kaynağındaki ilgili veri yapılarına eşlenebilirler.  

Belirli bir varlık türü için birden fazla varlık kümesi tanımlanabilir.

Dekont

EF Tasarım Aracı, tür başına birden çok varlık kümesi içeren kavramsal modelleri desteklemez.

 

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

  • Belge Öğesi (sıfır veya bir öğeye izin verilir)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğeye izin verilir)

Geçerli Öznitelikler

Aşağıdaki tabloda EntitySet öğesine uygulanabilecek öznitelikler açıklanmaktadı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ı.

 

Dekont

EntitySet öğ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 üç EntitySet öğesine sahip bir EntityContainer öğesi gösterilmektedir:

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

 

Tür başına birden çok varlık kümesi (MEST) tanımlamak mümkündür. Aşağıdaki örnek, Book varlık türü için iki varlık kümesine sahip bir varlık kapsayıcısını tanımlar:

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

EntityType öğesi, kavramsal modelde müşteri veya sipariş gibi üst düzey bir kavramın yapısını temsil eder. Varlık türü, bir uygulamadaki varlık türlerinin örnekleri için bir şablondur. Her şablon aşağıdaki bilgileri içerir:

  • Benzersiz bir ad. (Gerekli.)
  • Bir veya daha fazla özellik tarafından tanımlanan bir varlık anahtarı. (Gerekli.)
  • Veri içeren özellikler. (İsteğe bağlı.)
  • İlişkilendirmenin bir ucundan diğer ucuna gezintiye olanak sağlayan gezinti özellikleri. (İsteğe bağlı.)

Bir uygulamada, varlık türünün bir örneği belirli bir nesneyi (belirli bir müşteri veya sipariş gibi) temsil eder. Varlık türünün her örneğinin bir varlık kümesi içinde benzersiz bir varlık anahtarı olmalıdır.

İki varlık türü örneği yalnızca aynı türdeyse ve varlık anahtarlarının değerleri aynıysa eşit kabul edilir.

Bir 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)
  • Özellik (sıfır veya daha fazla öğe)
  • NavigationProperty (sıfır veya daha fazla öğe)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğe)

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ı.
BaseType Hayır Tanımlanan varlık türünün temel türü olan başka bir varlık türünün adı.
Abstract Hayır Varlık türünün soyut bir tür olup olmadığına bağlı olarak True veya False.
Opentype Hayır Varlık türünün açık bir varlık türü olup olmadığına bağlı olarak True veya False .
[!NOT]
>OpenType özniteliği yalnızca ADO.NET Veri Hizmetleri ile kullanılan kavramsal modellerde tanımlanan varlık türleri için geçerlidir.

 

Dekont

EntityType öğ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 üç Özellik öğesi ve iki NavigationProperty öğesi içeren bir EntityType öğesi gösterilmektedir:

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

EnumType öğesi numaralandırılmış bir türü temsil eder.

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Varlık türünün adı.
IsFlags Hayır Sabit listesi türünün bayrak kümesi olarak kullanılıp kullanılamayabileceğine bağlı olarak True veya False. Varsayılan değer False..
Underlyingtype Hayır Türün değer aralığını tanımlayan Edm.Byte, Edm.Int16, Edm.Int32, Edm.Int64 veya Edm.SByte.   Sabit listesi öğelerinin varsayılan temel türü Edm.Int32'dir ..

 

Dekont

EnumType öğ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 üç Üye öğesi içeren bir EnumType öğesi gösterilmektedir:

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

 

 

İşlev Öğesi (CSDL)

Kavramsal şema tanım dilindeki İşlev öğesi (CSDL), kavramsal modelde işlevleri tanımlamak veya bildirmek için kullanılır. İşlev, DefiningExpression öğesi kullanılarak tanımlanır.  

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

  • Belgeler (sıfır veya bir öğe)
  • Parametre (sıfır veya daha fazla öğe)
  • DefiningExpression (sıfır veya bir öğe)
  • ReturnType (İşlev) (sıfır veya bir öğe)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğe)

bir işlev için dönüş türü ReturnType (İşlev) öğesi veya ReturnType özniteliğiyle belirtilmelidir (aşağıya bakın), ancak her ikisini birden belirtmemelidir. Olası dönüş türleri herhangi bir EdmSimpleType, varlık türü, karmaşık tür, satır türü veya başvuru türüdür (veya bu türlerden birinin koleksiyonudur).

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet İşlevin adı.
Returntype Hayır İşlev tarafından döndürülen tür.

 

Dekont

İşlev öğ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, eğitmenin işe alınmadan sonraki yıl sayısını döndüren bir işlev tanımlamak için İşlev öğesi kullanılmaktadır.

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

 

 

FunctionImport Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) FunctionImport öğesi, veri kaynağında tanımlanan ancak kavramsal model aracılığıyla nesneler için kullanılabilen bir işlevi temsil eder. Örneğin, bir veritabanındaki saklı yordamı temsil etmek için depolama modelindeki bir İşlev öğesi kullanılabilir. Kavramsal modeldeki FunctionImport öğesi, Entity Framework uygulamasında karşılık gelen işlevi temsil eder ve FunctionImportMapping öğesi kullanılarak depolama modeli işlevine eşlenir. İşlev uygulamada çağrıldığında, ilgili saklı yordam veritabanında yürütülür.

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

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

İşlevin kabul edildiği her parametre için bir Parametre öğesi tanımlanmalıdır.

Bir işlev için dönüş türü ReturnType (FunctionImport) öğesi veya ReturnType özniteliğiyle belirtilmelidir (aşağıya bakın), ancak her ikisini birden belirtmemelidir. Dönüş türü değeri EdmSimpleType, EntityType veya ComplexType koleksiyonu olmalıdır.

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet İçeri aktarılan işlevin adı.
Returntype Hayır İşlevin döndürdüğü tür. İşlev bir değer döndürmezse bu özniteliği kullanmayın. Aksi takdirde, değerin ComplexType, EntityType veya EDMSimpleType koleksiyonu olması gerekir.
Entityset Hayır İşlev bir varlık türleri koleksiyonu döndürürse, EntitySet değerinin koleksiyonun ait olduğu varlık kümesi olması gerekir. Aksi takdirde EntitySet özniteliği kullanılmamalıdır.
IsComposable Hayır Değer true olarak ayarlanırsa, işlev birleştirilebilir (Tablo değerli İşlev) ve LINQ sorgusunda kullanılabilir.  Varsayılan değer false'tur.

 

Dekont

FunctionImport öğ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 parametre kabul eden ve varlık türleri koleksiyonu döndüren functionImport öğesi gösterilmektedir:

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

 

 

Anahtar Öğesi (CSDL)

Key öğesi, EntityType öğesinin alt öğesidir ve bir varlık anahtarı (kimliği belirleyen bir varlık türünün özellik veya özellik kümesi) tanımlar. Varlık anahtarını oluşturan özellikler tasarım zamanında seçilir. Varlık anahtarı özelliklerinin değerleri, çalışma zamanında bir varlık kümesi içindeki varlık türü örneğini benzersiz olarak tanımlamalıdır. Varlık kümesindeki örneklerin benzersizliğini garanti etmek için varlık anahtarını oluşturan özellikler seçilmelidir. Key öğesi, varlık türünün bir veya daha fazla özelliğine başvurarak bir varlık anahtarını tanımlar.

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

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

Geçerli Öznitelikler

Key öğ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 Book adlı bir varlık türünü tanımlar. Varlık anahtarı, varlık türünün ISBN özelliğine başvurularak tanımlanır.

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

 

Uluslararası Standart Kitap Numarası (ISBN) bir kitabı benzersiz olarak tanımladığından, ISBN özelliği varlık anahtarı için iyi bir seçimdir.

Aşağıdaki örnekte Ad ve Adres olmak üzere iki özellik içeren bir varlık anahtarına sahip varlık türü (Yazar) gösterilmektedir.

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

 

Aynı ada sahip iki yazarın aynı adreste yaşama olasılığı düşük olduğundan, varlık anahtarı için Ad ve Adres kullanmak makul bir seçenektir. Ancak, varlık anahtarı için bu seçenek, varlık kümesindeki benzersiz varlık anahtarlarını kesinlikle garanti etmez. Bu durumda, bir yazarı benzersiz olarak tanımlamak için kullanılabilecek AuthorId gibi bir özellik eklenmesi önerilir.

 

Üye Öğesi (CSDL)

Member öğesi EnumType öğesinin alt öğesidir ve numaralandırılmış türün bir üyesini tanımlar.

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Üyenin adı.
Değer Hayır Üyenin değeri. Varsayılan olarak, ilk üye 0 değerine sahiptir ve ardışık her numaralandırıcının değeri 1 artırılır. Aynı değerlere sahip birden çok üye olabilir.

 

Dekont

FunctionImport öğ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 üç Üye öğesi içeren bir EnumType öğesi gösterilmektedir:

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

 

 

NavigationProperty öğesi, ilişkilendirmenin diğer ucuna başvuru sağlayan bir gezinti özelliği tanımlar. Özellik öğesiyle tanımlanan özelliklerden farklı olarak, gezinti özellikleri verilerin şeklini ve özelliklerini tanımlamaz. İki varlık türü arasındaki ilişkilendirmede gezinmek için bir yol sağlar.

Gezinti özelliklerinin, ilişkilendirmenin sonundaki her iki varlık türünde de isteğe bağlı olduğunu unutmayın. İlişkilendirmenin sonunda bir varlık türünde gezinti özelliği tanımlarsanız, ilişkilendirmenin diğer ucundaki varlık türünde bir gezinti özelliği tanımlamanız gerekmez.

Bir gezinti özelliği tarafından döndürülen veri türü, uzak ilişkilendirme ucunun çokluğu tarafından belirlenir. Örneğin, OrdersNavProp adlı bir gezinti özelliğinin Bir Müşteri varlık türünde mevcut olduğunu ve Müşteri ile Sipariş arasında bire çok ilişkisinde gezinir. Gezinti özelliği için uzak ilişkilendirme sonu çok sayıda (*) olduğundan, veri türü bir koleksiyondur ( Order). Benzer şekilde, CustomerNavProp adlı bir gezinti özelliği Order varlık türünde mevcutsa, uzak ucun çokluğu bir (1) olduğundan veri türü Müşteri olacaktır.

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Gezinti özelliğinin adı.
İlişki Evet Model kapsamındaki bir ilişkilendirmenin adı.
ToRole Evet Gezintinin sona erdiği ilişkilendirmenin sonu. ToRole özniteliğinin değeri, ilişkilendirme uçlarından birinde tanımlanan Rol özniteliklerinden birinin değeriyle aynı olmalıdır (AssociationEnd öğesinde tanımlanır).
FromRole Evet Gezintinin başladığı ilişkilendirmenin sonu. FromRole özniteliğinin değeri, ilişkilendirme uçlarından birinde tanımlanan Rol özniteliklerinden birinin değeriyle aynı olmalıdır (AssociationEnd öğesinde tanımlanır).

 

Dekont

NavigationProperty öğ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, iki gezinti özelliğine (PublishedBy ve WrittenBy) sahip bir varlık türünü (Book) tanımlar:

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

Kavramsal şema tanım dilindeki (CSDL) OnDelete öğesi, bir ilişkilendirmeye bağlı davranışı tanımlar. Action özniteliği bir ilişkilendirmenin bir ucunda Art Arda Olarak ayarlanırsa, ilk uçta varlık türü silindiğinde ilişkilendirmenin diğer ucundaki ilgili varlık türleri silinir. İki varlık türü arasındaki ilişki birincil anahtardan birincil anahtara ilişkiyse, ilişkilendirmenin diğer ucundaki asıl nesne OnDelete belirtimine bakılmaksızın silindiğinde yüklenen bağımlı nesne silinir.  

Dekont

OnDelete öğesi yalnızca bir uygulamanın çalışma zamanı davranışını etkiler; veri kaynağındaki davranışı etkilemez. Veri kaynağında tanımlanan davranış, uygulamada tanımlanan davranışla aynı olmalıdır.

 

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

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

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. Art arda ise, asıl varlık türü silindiğinde bağımlı varlık türleri silinir. Hiçbiri ise, asıl varlık türü silindiğinde bağımlı varlık türleri silinmez.

 

Dekont

Association öğ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 CustomerOrders ilişkilendirmesini tanımlayan bir Association öğesi gösterilmektedir. OnDelete öğesi, belirli bir Müşteriyle ilgili olan ve ObjectContext'e yüklenmiş olan tüm Siparişlerin, Müşteri silindiğinde silineceğini gösterir.

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

 

 

Parametre Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Parameter öğesi FunctionImport öğesinin veya İşlev öğesinin alt öğesi olabilir.

FunctionImport Öğesi Uygulaması

BIR Parameter öğesi (FunctionImport öğesinin alt öğesi olarak), CSDL'de bildirilen işlev içeri aktarmaları için giriş ve çıkış parametrelerini tanımlamak için kullanılır.

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

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

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ü. Değer bir EDMSimpleType veya model kapsamındaki karmaşık bir tür olmalıdır.
Modu Hayır In, Out veya InOut parametresinin giriş, çıkış veya giriş/çıkış parametresi olmasına bağlı olarak.
Maxlength Hayır Parametrenin izin verilen maksimum uzunluğu.
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 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 Parameter alt öğesi ile functionImport öğesi gösterilmektedir. İşlev bir giriş parametresi kabul eder ve varlık türleri koleksiyonunu döndürür.

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

 

İşlev Öğesi Uygulaması

Parametre öğesi (İşlev öğesinin alt öğesi olarak), kavramsal modelde tanımlanan veya bildirilen işlevler için parametreleri tanımlar.

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

  • Belgeler (sıfır veya bir öğe)
  • CollectionType (sıfır veya bir öğe)
  • ReferenceType (sıfır veya bir öğe)
  • RowType (sıfır veya bir öğe)

Dekont

CollectionType, ReferenceType veya RowType öğelerinden yalnızca biri bir Property öğesinin alt öğesi olabilir.

 

  • Ek açıklama öğeleri (sıfır veya daha fazla öğeye izin verilir)

Dekont

Ek açıklama öğeleri diğer tüm alt öğelerden sonra görünmelidir. Ek açıklama öğelerine yalnızca CSDL v2 ve sonraki sürümlerde izin verilir.

 

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ü Hayır Parametre türü. Parametre aşağıdaki türlerden (veya bu tür koleksiyonlarından) biri olabilir:
EdmSimpleType
varlık türü
karmaşık tür
satır türü
başvuru türü
Nullable Hayır Özelliğin null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False.
DefaultValue Hayır Özelliğinin varsayılan değeri.
Maxlength Hayır Özellik değerinin uzunluk üst sınırı.
FixedLength Hayır Özellik değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır Özellik değerinin duyarlığı.
Ölçek Hayır Özellik değerinin ölçeği.
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).
Unicode Hayır Özellik 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.

 

Dekont

Parametre öğ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 işlev parametresi tanımlamak için bir Parametre alt öğesi kullanan bir İşlev öğesi gösterilmektedir.

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

 

Principal Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Principal öğesi, bilgi kısıtlamasının asıl sonunu tanımlayan ReferentialConstraint öğesinin alt öğesidir. ReferentialConstraint öğesi, ilişkisel veritabanındaki bilgi tutarlılığı kısıtlamasına benzer işlevleri tanımlar. Veritabanı tablosundaki bir sütunun (veya sütunların) başka bir tablonun birincil anahtarına başvurabilmesiyle aynı şekilde, varlık türündeki bir özellik (veya özellikler) başka bir varlık türünün varlık anahtarına başvurabilir. Başvurulan varlık türü, kısıtlamanın asıl sonu olarak adlandırılır. Asıl uca başvuran varlık türü, kısıtlamanın bağımlı sonu olarak adlandırılır. PropertyRef öğeleri, bağımlı uç tarafından hangi anahtarlara başvurulacağını belirtmek için kullanılır.

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Rol Evet İlişkilendirmenin asıl ucundaki varlık türünün 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, PublishedBy ilişkisinin tanımının parçası olan bir ReferentialConstraint öğesi gösterilmektedir. Publisher varlık türünün Id özelliği, bilgi kısıtlamasının asıl sonunu oluşturur.

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

 

 

Özellik Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Property öğesi EntityType öğesinin, ComplexType öğesinin veya RowType öğesinin alt öğesi olabilir.

EntityType ve ComplexType Öğesi Uygulamaları

Özellik öğeleri (EntityType veya ComplexType öğelerinin alt öğeleri olarak), bir varlık türü örneğinin veya karmaşık tür örneğinin içereceği verilerin şeklini ve özelliklerini tanımlar. Kavramsal modeldeki özellikler, bir sınıfta tanımlanan özelliklere benzer. Bir sınıftaki özelliklerin sınıfın şeklini tanımlaması ve nesneler hakkında bilgi taşıması gibi, kavramsal modeldeki özellikler bir varlık türünün şeklini tanımlar ve varlık türü örnekleri hakkında bilgi taşır.

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

  • Belge Öğesi (sıfır veya bir öğeye izin verilir)
  • Ek açıklama öğeleri (sıfır veya daha fazla öğeye izin verilir)

Aşağıdaki modeller bir Property öğesine uygulanabilir: Nullable, DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode, Collation, ConcurrencyMode. Modeller, özellik değerlerinin veri deposunda nasıl depolandığı hakkında bilgi sağlayan XML öznitelikleridir.

Dekont

Modeller yalnızca EDMSimpleType türü özelliklerine uygulanabilir.

 

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Özelliğin adı.
Tür Evet Özellik değerinin türü. Özellik değeri türü, model kapsamındaki bir EDMSimpleType veya karmaşık bir tür (tam adla gösterilir) olmalıdır.
Nullable Hayır Özelliğin null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False .
[!NOT]
> CSDL v1'de karmaşık bir tür özelliğine sahip Nullable="False"olmalıdır.
DefaultValue Hayır Özelliğinin varsayılan değeri.
Maxlength Hayır Özellik değerinin uzunluk üst sınırı.
FixedLength Hayır Özellik değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır Özellik değerinin duyarlığı.
Ölçek Hayır Özellik değerinin ölçeği.
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).
Unicode Hayır Özellik 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.
Concurrencymode Hayır Hiçbiri (varsayılan değer) veya Sabit. Değer Sabit olarak ayarlanırsa, özellik değeri iyimser eşzamanlılık denetimlerinde kullanılır.

 

Dekont

Property öğ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 üç Özellik öğesi içeren bir EntityType öğesi gösterilmektedir:

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

 

Aşağıdaki örnekte beş Özellik öğesi içeren bir ComplexType öğesi gösterilmektedir:

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

 

RowType Öğesi Uygulaması

Özellik öğeleri (RowType öğesinin alt öğeleri olarak), model tanımlı bir işleve geçirilebilen veya bu işlevden döndürülebilen verilerin şeklini ve özelliklerini tanımlar.  

Property öğesi aşağıdaki alt öğelerden tam olarak birine sahip olabilir:

  • CollectionType
  • ReferenceType
  • Rowtype

Property öğesinde herhangi bir sayı alt ek açıklaması öğesi olabilir.

Dekont

Ek açıklama öğelerine yalnızca CSDL v2 ve sonraki sürümlerde izin verilir.

 

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad Evet Özelliğin adı.
Tür Evet Özellik değerinin türü.
Nullable Hayır Özelliğin null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False .
[!NOT]
> CSDL v1'de karmaşık tür özelliğine sahip Nullable="False"olmalıdır.
DefaultValue Hayır Özelliğinin varsayılan değeri.
Maxlength Hayır Özellik değerinin uzunluk üst sınırı.
FixedLength Hayır Özellik değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır Özellik değerinin duyarlığı.
Ölçek Hayır Özellik değerinin ölçeği.
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).
Unicode Hayır Özellik 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.

 

Dekont

Property öğ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, model tanımlı bir işlevin dönüş türünün şeklini tanımlamak için kullanılan Özellik öğeleri gösterilmektedir.

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

Kavramsal şema tanım dilindeki (CSDL) PropertyRef öğesi, özelliğin aşağıdaki rollerden birini gerçekleştireceğini belirtmek için bir varlık türünün özelliğine başvurur:

  • Varlığın anahtarının bir parçası (kimliği belirleyen varlık türünün bir özelliği veya özellik kümesi). Varlık anahtarı tanımlamak için bir veya daha fazla PropertyRef öğesi kullanılabilir.
  • Başvuru kısıtlamasının bağımlı veya asıl ucu.

PropertyRef öğesi yalnızca alt öğe olarak ek açıklama öğelerine (sıfır veya daha fazla) sahip olabilir.

Dekont

Ek açıklama öğelerine yalnızca CSDL v2 ve sonraki sürümlerde izin verilir.

 

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 örnek bir varlık türünü (Book) tanımlar. Varlık anahtarı, varlık türünün ISBN özelliğine başvurularak tanımlanır.

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

 

Sonraki örnekte, iki özelliğin (Id ve PublisherId) başvuru kısıtlamasının asıl ve bağımlı uçları olduğunu belirtmek için iki PropertyRef öğesi kullanılır.

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

 

 

ReferenceType Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) ReferenceType öğesi, bir varlık türüne başvuru belirtir. ReferenceType öğesi aşağıdaki öğelerin alt öğesi olabilir:

  • ReturnType (İşlev)
  • Parametre
  • CollectionType

ReferenceType öğesi, bir işlev için parametre veya dönüş türü tanımlarken kullanılır.

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Tür Evet Başvurulmakta olan varlık türünün adı.

 

Dekont

ReferenceType öğ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 Kişi varlık türüne başvuru kabul eden model tanımlı bir işlevde Parametre öğesinin alt öğesi olarak kullanılan ReferenceType öğesi gösterilmektedir:

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

 

Aşağıdaki örnekte, Bir Kişi varlık türüne başvuru döndüren model tanımlı bir işlevde ReturnType (İşlev) öğesinin alt öğesi olarak kullanılan ReferenceType öğesi gösterilmektedir:

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

 

 

ReferentialConstraint Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) Bir ReferentialConstraint öğesi, ilişkisel veritabanındaki bilgi tutarlılığı kısıtlamasına benzer işlevselliği tanımlar. Veritabanı tablosundaki bir sütunun (veya sütunların) başka bir tablonun birincil anahtarına başvurabilmesiyle aynı şekilde, varlık türündeki bir özellik (veya özellikler) başka bir varlık türünün varlık anahtarına başvurabilir. Başvurulan varlık türü, kısıtlamanın asıl sonu olarak adlandırılır. Asıl uca başvuran varlık türü, kısıtlamanın bağımlı sonu olarak adlandırılır.

Bir varlık türünde kullanıma sunulan bir yabancı anahtar başka bir varlık türündeki bir özelliğe başvuruda bulunursa, ReferentialConstraint öğesi iki varlık türü arasında bir ilişki tanımlar. ReferentialConstraint öğesi iki varlık türünün nasıl ilişkili olduğu hakkında bilgi sağladığından, eşleme belirtimi dilinde (MSL) karşılık gelen AssociationSetMapping öğesi gerekmez. Yabancı anahtarlara sahip olmayan iki varlık türü arasındaki ilişki, ilişkilendirme bilgilerini veri kaynağına eşlemek için karşılık gelen bir AssociationSetMapping öğesine sahip olmalıdır.

Yabancı anahtar bir varlık türünde gösterilmezse, ReferentialConstraint öğesi yalnızca varlık türü ile başka bir varlık türü arasında birincil anahtardan birincil anahtara kısıtlama tanımlayabilir.

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

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

Geçerli Öznitelikler

ReferentialConstraint öğesi herhangi bir sayıda ek açıklama özniteliğine (özel XML öznitelikleri) sahip olabilir. 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, PublishedBy ilişkisinin tanımının bir parçası olarak kullanılan bir ReferentialConstraint öğesi gösterilmektedir.

 <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 (İşlev) Öğesi (CSDL)

Kavramsal şema tanım dilinde (CSDL) ReturnType (İşlev) öğ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.

Dönüş türleri herhangi bir EdmSimpleType, varlık türü, karmaşık tür, satır türü, başvuru türü veya bu türlerden birinin koleksiyonu olabilir.

bir işlevin dönüş türü ReturnType (İşlev) öğesinin Type özniteliğiyle veya aşağıdaki alt öğelerden biriyle belirtilebilir:

  • CollectionType
  • ReferenceType
  • Rowtype

Dekont

Hem ReturnType (İşlev) öğesinin Type özniteliğine hem de alt öğelerden birine sahip bir işlev dönüş türü belirtirseniz model doğrulamaz.

 

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Returntype Hayır İşlev tarafından döndürülen tür.

 

Dekont

ReturnType (İşlev) öğ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 kitabın yazdırıldığı yıl sayısını döndüren bir işlev tanımlamak için İşlev öğesi kullanılmaktadır. Dönüş türünün bir ReturnType (İşlev) öğesinin Type özniteliği tarafından belirtildiğini unutmayın.

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

Kavramsal şema tanım dilinde (CSDL) ReturnType (FunctionImport) öğesi, functionImport öğesinde tanımlanan bir işlev için dönüş türünü belirtir. İşlev dönüş türü bir ReturnType özniteliğiyle de belirtilebilir.

Dönüş türleri herhangi bir varlık türü, karmaşık tür veya EdmSimpleType koleksiyonu olabilir,

bir işlevin dönüş türü ReturnType (FunctionImport) öğesinin Type özniteliğiyle belirtilir.

Geçerli Öznitelikler

Aşağıdaki tabloda ReturnType (FunctionImport) öğesine uygulanabilecek öznitelikler açıklanmaktadır.

Öznitelik Adı Gerekli Değer
Türü Hayır İşlevin döndürdüğü tür. Değerin ComplexType, EntityType veya EDMSimpleType koleksiyonu olması gerekir.
Entityset Hayır İşlev bir varlık türleri koleksiyonu döndürürse, EntitySet değerinin koleksiyonun ait olduğu varlık kümesi olması gerekir. Aksi takdirde EntitySet özniteliği kullanılmamalıdır.

 

Dekont

ReturnType (FunctionImport) öğ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 kitapları ve yayımcıları döndüren bir FunctionImport kullanılır. İşlevin iki sonuç kümesi döndürdüğüne ve bu nedenle iki ReturnType (FunctionImport) öğesinin belirtildiğine dikkat edin.

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

 

 

RowType Öğesi (CSDL)

Kavramsal şema tanım dilindeki (CSDL) RowType öğesi, kavramsal modelde tanımlanan bir işlev için parametre veya dönüş türü olarak adlandırılmamış bir yapı tanımlar.

RowType öğesi aşağıdaki öğelerin alt öğesi olabilir:

  • CollectionType
  • Parametre
  • ReturnType (İşlev)

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

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

Geçerli Öznitelikler

RowType öğ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, işlevin satır koleksiyonu döndürdüğünü belirtmek için CollectionType öğesini kullanan model tanımlı bir işlev gösterilmektedir (RowType öğesinde belirtildiği gibi).

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

Schema Öğesi (CSDL)

Schema öğesi, kavramsal model tanımının kök öğesidir. Kavramsal modeli 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:

  • Kullanma
  • Entitycontainer
  • Entitytype
  • Enumtype
  • İlişki
  • ComplexType
  • Function

Schema öğesi sıfır veya bir Ek Açıklama öğesi içerebilir.

Dekont

İşlev öğesi ve ek açıklama öğelerine yalnızca CSDL v2 ve sonraki sürümlerde izin verilir.

 

Schema öğesi, bir kavramsal modeldeki varlık türü, karmaşı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. Ad alanları birden çok Şema öğesine ve birden çok .csdl dosyasına yayılabilir.

Kavramsal model ad alanı, Schema öğesinin XML ad alanından farklıdır. Kavramsal model ad alanı (Namespace özniteliği tarafından tanımlandığı gibi), varlık türleri, karmaşık türler 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 XML ad alanları (YYYY ve MM sırasıyla bir yıl ve ayı temsil eder) CSDL 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 Kavramsal modelin 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 Simple.Example.Model ad alanındaysa, EntityType'ın tam adı SimpleExampleModel.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, SSDL 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 Simple.Example.Model ad alanındaysa ve Diğer Ad özniteliğinin değeri Model ise, EntityType'ın tam adı olarak Model.Customer kullanabilirsiniz.

 

Dekont

Schema öğ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 EntityContainer öğesi, iki EntityType öğesi ve bir Association öğesi içeren bir Schema öğesi gösterilmektedir.

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

Kavramsal şema tanım dilindeki (CSDL) TypeRef öğesi, mevcut adlandırılmış türe başvuru sağlar. TypeRef öğesi, bir işlevin parametre veya dönüş türü olarak bir koleksiyona sahip olduğunu belirtmek için kullanılan CollectionType öğesinin alt öğesi olabilir.

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

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

Geçerli Öznitelikler

Aşağıdaki tabloda TypeRef öğesine uygulanabilecek öznitelikler açıklanmaktadır. DefaultValue, MaxLength, FixedLength, Precision, Scale, Unicode ve Collation özniteliklerinin yalnızca EDMSimpleTypes için geçerli olduğunu unutmayın.

Öznitelik Adı Gerekli Değer
Türü Hayır Başvurulmakta olan türün adı.
Nullable Hayır Özelliğin null değere sahip olup olmadığına bağlı olarak True (varsayılan değer) veya False .
[!NOT]
> CSDL v1'de karmaşık tür özelliğine sahip Nullable="False"olmalıdır.
DefaultValue Hayır Özelliğinin varsayılan değeri.
Maxlength Hayır Özellik değerinin uzunluk üst sınırı.
FixedLength Hayır Özellik değerinin sabit uzunlukta bir dize olarak depolanıp depolanmayacağına bağlı olarak True veya False .
Hassas Hayır Özellik değerinin duyarlığı.
Ölçek Hayır Özellik değerinin ölçeği.
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).
Unicode Hayır Özellik 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.

 

Dekont

CollectionType öğ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, işlevin Department varlık türlerinden oluşan bir koleksiyonu kabul ettiğini belirtmek için TypeRef öğesini (CollectionType öğesinin alt öğesi olarak) kullanan model tanımlı bir işlev gösterilmektedir.

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

 

 

Öğesini Kullanma (CSDL)

Using öğesi kavramsal şema tanım dilinde (CSDL) farklı bir ad alanında bulunan kavramsal modelin içeriğini içeri aktarır. Namespace özniteliğinin değerini ayarlayarak, başka bir kavramsal modelde tanımlanan varlık türlerine, karmaşık türlere ve ilişkilendirme türlerine başvurabilirsiniz. Birden fazla Using öğesi schema öğesinin alt öğesi olabilir.

Dekont

CSDL'de Using öğesi, bir programlama dilindeki using deyimi gibi çalışmaz. Bir programlama dilinde using deyimiyle bir ad alanını içeri aktardığınızda, özgün ad alanı içindeki nesneleri etkilemezsiniz. CSDL'de, içeri aktarılan ad alanı, özgün ad alanındaki bir varlık türünden türetilmiş bir varlık türü içerebilir. Bu, özgün ad alanında bildirilen varlık kümelerini etkileyebilir.

 

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

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

Geçerli Öznitelikler

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

Öznitelik Adı Gerekli Değer
Ad alanı Evet İçeri aktarılan ad alanının adı.
Alias Evet Ad alanı adı yerine kullanılan bir tanımlayıcı. Bu öznitelik gerekli olsa da, nesne adlarını niteleyen ad alanı adı yerine kullanılması gerekmez.

 

Dekont

Using öğ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, başka bir yerde tanımlanan bir ad alanını içeri aktarmak için kullanılan Using öğesi gösterilmektedir. Gösterilen Schema öğesinin ad alanının olduğunu BooksModelunutmayın. Address EntityType üzerindeki Publisherözelliği, ad alanında ExtendedBooksModel tanımlanan karmaşık bir türdür (Using öğesiyle içeri aktarılır).

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

 

 

Ek Açıklama Öznitelikleri (CSDL)

Kavramsal şema tanım dilindeki (CSDL) ek açıklama öznitelikleri, kavramsal modeldeki özel XML öznitelikleridir. Geçerli XML yapısına ek olarak, ek açıklama öznitelikleri için aşağıdakiler doğru olmalıdır:

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

Ek açıklama öznitelikleri, kavramsal modeldeki öğeler hakkında ek meta veriler sağlamak için kullanılabilir. 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, ek açıklama özniteliğine (CustomAttribute) sahip bir EntityType öğesi gösterilmektedir. Örnekte varlık türü öğesine uygulanan bir ek açıklama öğesi de gösterilir.

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

 

Aşağıdaki kod ek açıklama özniteliğindeki meta verileri alır ve konsola yazar:

 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());
 }

 

Yukarıdaki kod, dosyanın projenin çıkış dizininde olduğunu ve aşağıdaki ve Using deyimlerini projenize eklediğinizi Imports varsayarSchool.csdl:

 using System.Data.Metadata.Edm;

 

 

Ek Açıklama Öğeleri (CSDL)

Kavramsal şema tanım dilindeki (CSDL) ek açıklama öğeleri, kavramsal modeldeki özel XML öğeleridir. Geçerli XML yapısına ek olarak, ek açıklama öğeleri için aşağıdakiler doğru olmalıdır:

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

Ek açıklama öğeleri, kavramsal modeldeki öğeler hakkında ek meta veriler sağlamak için kullanılabilir. .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 varlık türü öğesine uygulanan bir ek açıklama özniteliği de gösterilir.

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

 

Aşağıdaki kod ek açıklama öğesindeki meta verileri alır ve konsola yazar:

 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());
 }

 

Yukarıdaki kod, School.csdl dosyasının projenin çıkış dizininde olduğunu ve aşağıdaki ve Using deyimlerini projenize eklediğinizi Imports varsayar:

 using System.Data.Metadata.Edm;

 

 

Kavramsal Model Türleri (CSDL)

Kavramsal şema tanım dili (CSDL), kavramsal modelde özellikleri tanımlayan EDMSimpleTypes adlı bir dizi soyut ilkel veri türünü destekler. EDMSimpleTypes , depolama veya barındırma ortamında desteklenen ilkel veri türlerine yönelik proxy'lerdir.

Aşağıdaki tabloda CSDL tarafından desteklenen temel veri türleri listelenmektedir. Tabloda ayrıca her EDMSimpleType'a uygulanabilecek modeller listelenir.

EDMSimpleType Tanım Geçerli Modeller
Edm.Binary İkili verileri içerir. MaxLength, FixedLength, Nullable, Default
Edm.Boolean true veya false değerini içerir. Null Atanabilir, Varsayılan
Edm.Byte İmzasız bir 8 bit tamsayı değeri içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.DateTime Tarih ve saati temsil eder. Duyarlık, Null Atanabilir, Varsayılan
Edm.DateTimeOffset GMT'den dakika cinsinden uzaklık olarak bir tarih ve saat içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Decimal Sabit duyarlık ve ölçek içeren sayısal bir değer içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Double 15 basamaklı duyarlık ile kayan nokta numarası içerir Duyarlık, Null Atanabilir, Varsayılan
Edm.Float 7 basamaklı duyarlıklı kayan nokta sayısı içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Guid 16 baytlık benzersiz bir tanımlayıcı içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Int16 İmzalı bir 16 bit tamsayı değeri içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Int32 İmzalı bir 32 bit tamsayı değeri içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Int64 İmzalı bir 64 bit tamsayı değeri içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.SByte İmzalı bir 8 bit tamsayı değeri içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.String Karakter verilerini içerir. Unicode, FixedLength, MaxLength, Harmanlama, Duyarlık, Null Atanabilir, Varsayılan
Edm.Time Günün saatini içerir. Duyarlık, Null Atanabilir, Varsayılan
Edm.Geography Null Atanabilir, Varsayılan, SRID
Edm.GeographyPoint Null Atanabilir, Varsayılan, SRID
Edm.GeographyLineString Null Atanabilir, Varsayılan, SRID
Edm.GeographyPolygon Null Atanabilir, Varsayılan, SRID
Edm.GeographyMultiPoint Null Atanabilir, Varsayılan, SRID
Edm.GeographyMultiLineString Null Atanabilir, Varsayılan, SRID
Edm.GeographyMultiPolygon Null Atanabilir, Varsayılan, SRID
Edm.GeographyCollection Null Atanabilir, Varsayılan, SRID
Edm.Geometry Null Atanabilir, Varsayılan, SRID
Edm.GeometryPoint Null Atanabilir, Varsayılan, SRID
Edm.GeometryLineString Null Atanabilir, Varsayılan, SRID
Edm.GeometryPolygon Null Atanabilir, Varsayılan, SRID
Edm.GeometryMultiPoint Null Atanabilir, Varsayılan, SRID
Edm.GeometryMultiLineString Null Atanabilir, Varsayılan, SRID
Edm.GeometryMultiPolygon Null Atanabilir, Varsayılan, SRID
Edm.GeometryCollection Null Atanabilir, Varsayılan, SRID

Modeller (CSDL)

Kavramsal şema tanım dilindeki (CSDL) modeller, varlık türlerinin ve karmaşık türlerin özellikleri üzerindeki kısıtlamaları temsil eder. Modeller aşağıdaki CSDL öğelerinde XML öznitelikleri olarak görünür:

  • Özellik
  • Typeref
  • Parametre

Aşağıdaki tabloda CSDL'de desteklenen modeller açıklanmaktadır. Tüm modeller isteğe bağlıdır. Aşağıda listelenen bazı modeller, Entity Framework tarafından kavramsal bir modelden veritabanı oluşturulurken kullanılır.

Dekont

Kavramsal modeldeki veri türleri hakkında bilgi için bkz. Kavramsal Model Türleri (CSDL).

Tarafı Tanım Şunlara uygulanır Veritabanı oluşturma için kullanılır Çalışma zamanı tarafından kullanılır
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. Edm.String Evet Hayır
Concurrencymode İyimser eşzamanlılık denetimleri için özelliğinin değerinin kullanılması gerektiğini gösterir. Tüm EDMSimpleType özellikleri No. Evet
Varsayılan Örnekleme sırasında hiçbir değer sağlanmazsa özelliğin varsayılan değerini belirtir. Tüm EDMSimpleType özellikleri Evet Evet
FixedLength Özellik değerinin uzunluğunun değişip değişemeyeceğini belirtir. Edm.Binary, Edm.String Evet Hayır
Maxlength Özellik değerinin uzunluk üst sınırını belirtir. Edm.Binary, Edm.String Evet Hayır
Nullable Özelliğin null değere sahip olup olmayacağını belirtir. Tüm EDMSimpleType özellikleri Evet Evet
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, özellik değerinin saniyenin kesirli bölümü için basamak sayısını belirtir. Edm.DateTime, Edm.DateTimeOffset, Edm.Decimal, Edm.Time Evet Hayır
Ölçek Özellik değerinin ondalık noktasının sağındaki basamak sayısını belirtir. Edm.Decimal Evet Hayır
SRID Uzamsal Sistem Başvuru Sistemi Kimliğini belirtir. Daha fazla bilgi için bkz . SRID ve 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. Evet
Unicode Özellik değerinin Unicode olarak depolanıp depolanmadığını gösterir. Edm.String Evet Evet

Dekont

Kavramsal bir modelden veritabanı oluştururken, Veritabanı Oluşturma Sihirbazı aşağıdaki ad alanındaysa bir Property öğesinde StoreGeneratedPattern özniteliğinin değerini tanır: https://schemas.microsoft.com/ado/2009/02/edm/annotation . Özniteliği için desteklenen değerler Kimlik ve Hesaplanan'dır. Identity değeri, veritabanında oluşturulan kimlik değerine sahip bir veritabanı sütunu oluşturur. Hesaplanan değeri, veritabanında hesaplanan değere sahip bir sütun oluşturur.

Örnek

Aşağıdaki örnekte, varlık türünün özelliklerine uygulanan modeller gösterilmektedir:

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