CSDL Belirtimi
Not
CSDL v1 desteklenmiyor, lütfen V3'e güncelleştirin
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 Designer, kavramsal model bilgilerini tasarım zamanında bir .edmx dosyasında depolar. Derleme zamanında EF Designer, ç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 | Yes | İlişkilendirmenin adı. |
Not
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 Uç öğesiyle belirtilir.
Geçerli Öznitelikler
Aşağıdaki tabloda AssociationSet öğesine uygulanabilecek öznitelikler açıklanmaktadır.
Öznitelik Adı | Gerekli | Değer |
---|---|---|
Ad | Yes | Varlık kümesinin adı. Name özniteliğinin değeri Association özniteliğinin değeriyle aynı olamaz. |
Dernek | Yes | İ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. |
Not
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
Not
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 . |
Kesinlik | 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. |
Not
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 >= 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 |
---|---|---|
Veri Akışı Adı | Yes | 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. |
Not
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.
Not
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 | Yes | İlişkilendirmenin bağımlı ucundaki varlık türünün adı. |
Not
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, Documentation öğesi EF Designer'ın 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ünür.
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 Özellikleri Customer
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 | Yes | İ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 | Yes | 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. |
Not
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)
Not
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 | Yes | Ü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. |
Not
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 | Yes | 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ı. |
Not
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.
Not
EF Designer, 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 | Yes | Varlık kümesinin adı. |
EntityType | Yes | Varlık kümesinin örnekleri içerdiği varlık türünün tam adı. |
Not
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 | Yes | 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. |
Not
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 | Yes | 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.. |
Temel Tür | 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 .. |
Not
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 | Yes | İşlevin adı. |
ReturnType | Hayır | İşlev tarafından döndürülen tür. |
Not
İş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 | Yes | İç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. |
Not
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 | Yes | Üyenin adı. |
Value | 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. |
Not
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 (CSDL)
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 | Yes | Gezinti özelliğinin adı. |
İlişki | Yes | Model kapsamındaki bir ilişkilendirmenin adı. |
ToRole | Yes | 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 | Yes | 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). |
Not
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.
Not
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 | Yes | 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. |
Not
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 | Yes | Parametrenin adı. |
Tür | Yes | Parametre türü. Değer bir EDMSimpleType veya model kapsamındaki karmaşık bir tür olmalıdır. |
Mod | 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. |
Kesinlik | 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). |
Not
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)
Not
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)
Not
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 | Yes | 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 . |
Kesinlik | 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. |
Not
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 | Yes | İlişkilendirmenin asıl ucundaki varlık türünün adı. |
Not
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.
Not
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 | Yes | Özelliğin adı. |
Tür | Yes | Ö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 . |
Kesinlik | 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. |
Not
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.
Not
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 | Yes | Özelliğin adı. |
Tür | Yes | Ö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 . |
Kesinlik | 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. |
Not
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 >= 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.
Not
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 | Yes | Başvuruda bulunan özelliğin adı. |
Not
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 | Yes | Başvurulmakta olan varlık türünün adı. |
Not
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
Not
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. |
Not
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. |
Not
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 >= 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
- İşlev
Schema öğesi sıfır veya bir Ek Açıklama öğesi içerebilir.
Not
İş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ı | Yes | 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. |
Not
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 . |
Kesinlik | 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. |
Not
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.
Not
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ı | Yes | İçeri aktarılan ad alanının adı. |
Alias | Yes | 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. |
Not
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 BooksModel
unutmayı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 | Açıklama | 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.
Not
Kavramsal modeldeki veri türleri hakkında bilgi için bkz. Kavramsal Model Türleri (CSDL).
Tarafı | Açıklama | Ş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 | Yes | 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 | Hayır | Evet |
Varsayılan | Örnekleme sırasında hiçbir değer sağlanmazsa özelliğin varsayılan değerini belirtir. | Tüm EDMSimpleType özellikleri | Yes | Yes |
FixedLength | Özellik değerinin uzunluğunun değişip değişemeyeceğini belirtir. | Edm.Binary, Edm.String | Yes | Hayır |
MaxLength | Özellik değerinin uzunluk üst sınırını belirtir. | Edm.Binary, Edm.String | Yes | Hayır |
Nullable | Özelliğin null değere sahip olup olmayacağını belirtir. | Tüm EDMSimpleType özellikleri | Yes | Yes |
Kesinlik | 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 | Yes | Hayır |
Ölçek | Özellik değerinin ondalık noktasının sağındaki basamak sayısını belirtir. | Edm.Decimal | Yes | 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 | Hayır | Evet |
Unicode | Özellik değerinin Unicode olarak depolanıp depolanmadığını gösterir. | Edm.String | Yes | Evet |
Not
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>