Bagikan melalui


Spesifikasi CSDL

Bahasa definisi skema konseptual (CSDL) adalah bahasa berbasis XML yang menjelaskan entitas, hubungan, dan fungsi yang membentuk model konseptual aplikasi berbasis data. Model konseptual ini dapat digunakan oleh Entity Framework atau WCF Data Services. Metadata yang dijelaskan dengan CSDL digunakan oleh Kerangka Kerja Entitas untuk memetakan entitas dan hubungan yang ditentukan dalam model konseptual ke sumber data. Untuk informasi selengkapnya, lihat Spesifikasi SSDL dan Spesifikasi MSL.

CSDL adalah implementasi Entity Framework dari Model Data Entitas.

Dalam aplikasi Entity Framework, metadata model konseptual dimuat dari file .csdl (ditulis dalam CSDL) ke dalam instans System.Data.Metadata.Edm.EdmItemCollection dan dapat diakses dengan menggunakan metode dalam kelas System.Data.Metadata.Edm.MetadataWorkspace. Entity Framework menggunakan metadata model konseptual untuk menerjemahkan kueri terhadap model konseptual ke perintah khusus sumber data.

Perancang EF menyimpan informasi model konseptual dalam file .edmx pada waktu desain. Pada waktu build, EF Designer menggunakan informasi dalam file .edmx untuk membuat file .csdl yang diperlukan oleh Entity Framework saat runtime.

Versi CSDL dibingkai oleh namespace XML.

Versi CSDL XML Namespace
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

 

Elemen Asosiasi (CSDL)

Elemen Asosiasi mendefinisikan hubungan antara dua jenis entitas. Asosiasi harus menentukan jenis entitas yang terlibat dalam hubungan dan kemungkinan jumlah jenis entitas di setiap akhir hubungan, yang dikenal sebagai perkalian. Perkalian akhir asosiasi dapat memiliki nilai satu (1), nol atau satu (0,.1), atau banyak (*). Informasi ini ditentukan dalam dua elemen Akhir anak.

Instans jenis entitas di salah satu ujung asosiasi dapat diakses melalui properti navigasi atau kunci asing, jika diekspos pada jenis entitas.

Dalam aplikasi, instans asosiasi mewakili hubungan tertentu antara instans jenis entitas. Instans asosiasi dikelompokkan secara logis dalam set asosiasi.

Elemen Asosiasi dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Akhir (tepat 2 elemen)
  • ReferentialConstraint (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen Asosiasi .

Nama Atribut Diperlukan Nilai
Nama Ya Nama asosiasi.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Asosiasi . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Asosiasi yang menentukan asosiasi CustomerOrders ketika kunci asing belum diekspos pada jenis entitas Pelanggan dan Pesanan . Nilai Multiplicity untuk setiap Akhir asosiasi menunjukkan bahwa banyak Pesanan dapat dikaitkan dengan Pelanggan, tetapi hanya satu Pelanggan yang dapat dikaitkan dengan Pesanan. Selain itu, elemen OnDelete menunjukkan bahwa semua Pesanan yang terkait dengan Pelanggan tertentu dan telah dimuat ke dalam ObjectContext akan dihapus jika Pelanggan dihapus.

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

 

Contoh berikut menunjukkan elemen Asosiasi yang menentukan asosiasi CustomerOrders ketika kunci asing telah diekspos pada jenis entitas Pelanggan dan Pesanan . Dengan kunci asing terekspos, hubungan antara entitas dikelola dengan elemen ReferentialConstraint . Elemen AssociationSetMapping yang sesuai tidak perlu memetakan asosiasi ini ke sumber data.

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

 

 

Elemen AsosiasiSet (CSDL)

Elemen AssociationSet dalam bahasa definisi skema konseptual (CSDL) adalah kontainer logis untuk instans asosiasi dengan jenis yang sama. Kumpulan asosiasi menyediakan definisi untuk mengelompokkan instans asosiasi sehingga dapat dipetakan ke sumber data.  

Elemen AssociationSet dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen diizinkan)
  • Akhir (tepat dua elemen diperlukan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Atribut Asosiasi menentukan jenis asosiasi yang dimuat oleh kumpulan asosiasi. Kumpulan entitas yang membentuk akhir kumpulan asosiasi ditentukan dengan tepat dua elemen Akhir anak.

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen AssociationSet .

Nama Atribut Diperlukan Nilai
Nama Ya Nama kumpulan entitas. Nilai atribut Nama tidak boleh sama dengan nilai atribut Asosiasi .
Asosiasi Ya Nama asosiasi yang sepenuhnya memenuhi syarat yang ditetapkan asosiasi berisi instans. Asosiasi harus berada di namespace yang sama dengan kumpulan asosiasi.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen AssociationSet . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityContainer dengan dua elemen AssociationSet :

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

 

 

Elemen CollectionType (CSDL)

Elemen CollectionType dalam bahasa definisi skema konseptual (CSDL) menentukan bahwa parameter fungsi atau jenis pengembalian fungsi adalah koleksi. Elemen CollectionType dapat menjadi turunan dari elemen Parameter atau elemen ReturnType (Function). Jenis koleksi dapat ditentukan dengan menggunakan atribut Jenis atau salah satu elemen turunan berikut:

  • CollectionType
  • ReferenceType
  • RowType
  • TypeRef

Catatan

Model tidak akan memvalidasi jika jenis koleksi ditentukan dengan atribut Jenis dan elemen turunan.

 

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen CollectionType . Perhatikan bahwa atribut DefaultValue, MaxLength, FixedLength, Presisi, Skala, Unicode, dan Kolase hanya berlaku untuk koleksi EDMSimpleTypes.

Nama Atribut Diperlukan Nilai
Jenis Tidak Jenis koleksi.
Dapat diubah ke null Tidak True (nilai default) atau False tergantung pada apakah properti dapat memiliki nilai null.
[!NOTE]
> Dalam CSDL v1, properti jenis kompleks harus memiliki Nullable="False".
DefaultValue Tidak Nilai default properti .
MaxLength Tidak Panjang maksimum nilai properti.
FixedLength Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string panjang tetap.
Presisi Tidak Presisi nilai properti.
Skala Tidak Skala nilai properti.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk properti jenis spasial.   Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server)
Unicode Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string Unicode.
Kolase Tidak String yang menentukan urutan penyatuan yang akan digunakan dalam sumber data.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen CollectionType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan fungsi yang ditentukan model yang menggunakan elemen CollectionType untuk menentukan bahwa fungsi mengembalikan kumpulan jenis entitas Orang (seperti yang ditentukan dengan atribut ElementType ).

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

 

Contoh berikut menunjukkan fungsi yang ditentukan model yang menggunakan elemen CollectionType untuk menentukan bahwa fungsi mengembalikan kumpulan baris (seperti yang ditentukan dalam elemen RowType ).

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

 

Contoh berikut menunjukkan fungsi yang ditentukan model yang menggunakan elemen CollectionType untuk menentukan bahwa fungsi menerima sebagai parameter kumpulan jenis entitas Departemen .

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

 

 

ComplexType Element (CSDL)

Elemen ComplexType mendefinisikan struktur data yang terdiri dari properti EdmSimpleType atau jenis kompleks lainnya.  Jenis kompleks dapat menjadi properti dari jenis entitas atau jenis kompleks lainnya. Jenis kompleks mirip dengan jenis entitas di tempat jenis kompleks mendefinisikan data. Namun, ada beberapa perbedaan utama antara jenis kompleks dan jenis entitas:

  • Jenis kompleks tidak memiliki identitas (atau kunci) dan oleh karena itu tidak dapat ada secara independen. Jenis kompleks hanya dapat ada sebagai properti jenis entitas atau jenis kompleks lainnya.
  • Jenis kompleks tidak dapat berpartisipasi dalam asosiasi. Tidak ada akhir asosiasi yang dapat menjadi jenis kompleks, dan oleh karena itu properti navigasi tidak dapat didefinisikan untuk jenis kompleks.
  • Properti tipe kompleks tidak boleh memiliki nilai null, meskipun properti skalar dari jenis kompleks masing-masing dapat diatur ke null.

Elemen ComplexType dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Properti (nol atau lebih elemen)
  • Elemen anotasi (nol atau lebih elemen)

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen ComplexType .

Nama Atribut Diperlukan Nilai
Nama Ya Nama jenis kompleks. Nama jenis kompleks tidak boleh sama dengan nama jenis kompleks, jenis entitas, atau asosiasi lain yang berada dalam cakupan model.
BaseType Tidak Nama jenis kompleks lain yang merupakan jenis dasar dari jenis kompleks yang sedang ditentukan.
[!NOTE]
> Atribut ini tidak berlaku dalam CSDL v1. Pewarisan untuk jenis kompleks tidak didukung dalam versi tersebut.
Abstrak Tidak True atau False (nilai default) tergantung pada apakah jenis kompleks adalah jenis abstrak.
[!NOTE]
> Atribut ini tidak berlaku dalam CSDL v1. Jenis kompleks dalam versi tersebut tidak boleh berupa jenis abstrak.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen ComplexType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan jenis kompleks, Alamat, dengan properti EdmSimpleType StreetAddress, City, StateOrProvince, Country, dan PostalCode.

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

 

Untuk menentukan jenis kompleks Alamat (di atas) sebagai properti dari jenis entitas, Anda harus mendeklarasikan jenis properti dalam definisi jenis entitas. Contoh berikut menunjukkan properti Alamat sebagai jenis kompleks pada jenis entitas (Penerbit):

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

 

 

DefiningExpression Element (CSDL)

Elemen DefiningExpression dalam bahasa definisi skema konseptual (CSDL) berisi ekspresi Entity SQL yang menentukan fungsi dalam model konseptual.  

Catatan

Untuk tujuan validasi, elemen DefiningExpression dapat berisi konten arbitrer. Namun, Entity Framework akan melemparkan pengecualian pada runtime jika elemen DefiningExpression tidak berisi SQL Entitas yang valid.

 

Atribut yang Berlaku

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen DefiningExpression . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

Contoh

Contoh berikut menggunakan elemen DefiningExpression untuk menentukan fungsi yang mengembalikan jumlah tahun sejak buku diterbitkan. Konten elemen DefiningExpression ditulis dalam Entity SQL.

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

 

 

Elemen Dependen (CSDL)

Elemen Dependen dalam bahasa definisi skema konseptual (CSDL) adalah elemen turunan ke elemen ReferentialConstraint dan menentukan akhir dependen dari batasan referensial. Elemen ReferentialConstraint mendefinisikan fungsionalitas yang mirip dengan batasan integritas referensial dalam database relasional. Dengan cara yang sama seperti kolom (atau kolom-kolom) dari tabel database dapat mereferensikan kunci primer tabel lain, properti (atau properti-properti) dari jenis entitas dapat mereferensikan kunci entitas dari jenis entitas lain. Jenis entitas yang direferensikan disebut akhir prinsipal batasan. Jenis entitas yang mereferensikan akhir prinsipal disebut akhir dependen dari batasan. Elemen PropertyRef digunakan untuk menentukan kunci mana yang mereferensikan ujung utama.

Elemen Dependen dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • PropertyRef (satu atau beberapa elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen Dependen .

Nama Atribut Diperlukan Nilai
Peran Ya Nama jenis entitas pada akhir dependen asosiasi.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Dependen . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen ReferentialConstraint yang digunakan sebagai bagian dari definisi asosiasi PublishedBy . Properti PublisherId dari jenis entitas Buku membentuk akhir dependen dari batasan referensial.

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

 

 

Elemen Dokumentasi (CSDL)

Elemen Dokumentasi dalam bahasa definisi skema konseptual (CSDL) dapat digunakan untuk memberikan informasi tentang objek yang ditentukan dalam elemen induk. Dalam file .edmx, ketika elemen Dokumentasi adalah turunan dari elemen yang muncul sebagai objek pada permukaan desain Desainer EF (seperti entitas, asosiasi, atau properti), konten elemen Dokumentasi akan muncul di jendela Properti Visual Studio untuk objek tersebut.

Elemen Dokumentasi dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Ringkasan: Deskripsi singkat tentang elemen induk. (nol atau satu elemen)
  • LongDescription: Deskripsi ekstensif dari elemen induk. (nol atau satu elemen)
  • Elemen anotasi. (nol atau lebih elemen)

Atribut yang Berlaku

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Dokumentasi . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

Contoh

Contoh berikut menunjukkan elemen Dokumentasi sebagai elemen turunan dari elemen EntityType. Jika cuplikan di bawah ini ada di konten CSDL file .edmx, konten elemen Ringkasan dan LongDescription akan muncul di jendela Properti Visual Studio saat Anda mengklik Customer jenis entitas.

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

 

 

Elemen Akhir (CSDL)

Elemen Akhir dalam bahasa definisi skema konseptual (CSDL) dapat menjadi turunan dari elemen Asosiasi atau elemen AssociationSet. Dalam setiap kasus, peran elemen Akhir berbeda dan atribut yang berlaku berbeda.

Elemen Akhir sebagai Anak dari Elemen Asosiasi

Elemen Akhir (sebagai turunan dari elemen Asosiasi) mengidentifikasi jenis entitas di salah satu ujung asosiasi dan jumlah instans jenis entitas yang dapat ada di akhir asosiasi tersebut. Akhir asosiasi didefinisikan sebagai bagian dari asosiasi; sebuah asosiasi harus memiliki tepat dua akhir asosiasi. Instans jenis entitas di salah satu ujung asosiasi dapat diakses melalui properti navigasi atau kunci asing jika diekspos pada jenis entitas.  

Elemen Akhir dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • OnDelete (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen Akhir saat merupakan turunan dari elemen Asosiasi .

Nama Atribut Diperlukan Nilai
Jenis Ya Nama jenis entitas di salah satu ujung asosiasi.
Peran Tidak Nama untuk akhir asosiasi. Jika tidak ada nama yang disediakan, nama jenis entitas pada akhir asosiasi akan digunakan.
Beberapa Ya 1, 0..1, atau * tergantung pada jumlah instans jenis entitas yang dapat berada di akhir asosiasi.
1 menunjukkan bahwa tepat satu instans jenis entitas ada di akhir asosiasi.
0..1 menunjukkan bahwa nol atau satu instans jenis entitas ada di akhir asosiasi.
* menunjukkan bahwa nol, satu, atau beberapa instans jenis entitas ada di akhir asosiasi.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Akhir . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Asosiasi yang menentukan asosiasi CustomerOrders . Nilai Multiplicity untuk setiap Akhir asosiasi menunjukkan bahwa banyak Pesanan dapat dikaitkan dengan Pelanggan, tetapi hanya satu Pelanggan yang dapat dikaitkan dengan Pesanan. Selain itu, elemen OnDelete menunjukkan bahwa semua Pesanan yang terkait dengan Pelanggan tertentu dan yang telah dimuat ke dalam ObjectContext akan dihapus jika Pelanggan dihapus.

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

 

Elemen Akhir sebagai Turunan dari Elemen AssociationSet

Elemen Akhir menentukan salah satu ujung kumpulan asosiasi. Elemen AssociationSet harus berisi dua elemen Akhir . Informasi yang terkandung dalam elemen Akhir digunakan dalam memetakan asosiasi yang diatur ke sumber data.

Elemen Akhir dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Catatan

Elemen anotasi harus muncul setelah semua elemen anak lainnya. Elemen anotasi hanya diizinkan di CSDL v2 dan yang lebih baru.

 

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen Akhir saat merupakan turunan dari elemen AssociationSet .

Nama Atribut Diperlukan Nilai
EntitySet Ya Nama elemen EntitySet yang menentukan salah satu ujung elemen AssociationSet induk. Elemen EntitySet harus didefinisikan dalam kontainer entitas yang sama dengan elemen AssociationSet induk.
Peran Tidak Nama set asosiasi berakhir. Jika atribut Peran tidak digunakan, nama akhir kumpulan asosiasi akan menjadi nama kumpulan entitas.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Akhir . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityContainer dengan dua elemen AssociationSet , masing-masing dengan dua elemen Akhir :

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

 

 

Elemen EntityContainer (CSDL)

Elemen EntityContainer dalam bahasa definisi skema konseptual (CSDL) adalah kontainer logis untuk kumpulan entitas, set asosiasi, dan impor fungsi. Kontainer entitas model konseptual memetakan ke kontainer entitas model penyimpanan melalui elemen EntityContainerMapping. Kontainer entitas model penyimpanan menjelaskan struktur database: kumpulan entitas menjelaskan tabel, kumpulan asosiasi menjelaskan batasan kunci asing, dan impor fungsi menjelaskan prosedur tersimpan dalam database.

Elemen EntityContainer dapat memiliki nol atau satu elemen Dokumentasi. Jika ada elemen Dokumentasi, elemen tersebut harus mendahului semua elemen EntitySet, AssociationSet, dan FunctionImport.

Elemen EntityContainer dapat memiliki nol atau lebih elemen turunan berikut (dalam urutan yang tercantum):

  • EntitySet
  • Himpunan Asosiasi
  • FunctionImport
  • Elemen anotasi

Anda dapat memperluas elemen EntityContainer untuk menyertakan konten EntityContainer lain yang berada dalam namespace yang sama. Untuk menyertakan konten EntityContainer lain, dalam elemen EntityContainer referensi, atur nilai atribut Extends ke nama elemen EntityContainer yang ingin Anda sertakan. Semua elemen turunan dari elemen EntityContainer yang disertakan akan diperlakukan sebagai elemen turunan dari elemen EntityContainer yang mereferensikan.

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen Menggunakan .

Nama Atribut Diperlukan Nilai
Nama Ya Nama kontainer entitas.
Meluas Tidak Nama kontainer entitas lain dalam namespace yang sama.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen EntityContainer . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityContainer yang menentukan tiga set entitas dan dua set asosiasi.

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

 

 

Elemen EntitySet (CSDL)

Elemen EntitySet dalam bahasa definisi skema konseptual adalah kontainer logis untuk instans jenis entitas dan instans dari jenis apa pun yang berasal dari jenis entitas tersebut. Hubungan antara jenis entitas dan kumpulan entitas dianalogikan dengan hubungan antara baris dan tabel dalam database relasional. Seperti baris, jenis entitas menentukan sekumpulan data terkait, dan, seperti tabel, kumpulan entitas berisi instans definisi tersebut. Set entitas menyediakan konstruksi untuk mengelompokkan instans jenis entitas sehingga dapat dipetakan ke struktur data terkait dalam sumber data.  

Lebih dari satu entitas yang ditetapkan untuk jenis entitas tertentu dapat ditentukan.

Catatan

Desainer EF tidak mendukung model konseptual yang berisi beberapa set entitas per jenis.

 

Elemen EntitySet dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Elemen Dokumentasi (nol atau satu elemen diizinkan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen EntitySet .

Nama Atribut Diperlukan Nilai
Nama Ya Nama kumpulan entitas.
EntityType Ya Nama yang sepenuhnya memenuhi syarat dari jenis entitas yang set entitasnya berisi instans.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen EntitySet . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityContainer dengan tiga elemen EntitySet :

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

 

Beberapa kumpulan entitas dapat ditentukan per jenis (MEST). Contoh berikut mendefinisikan kontainer entitas dengan dua set entitas untuk jenis entitas Buku :

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

 

 

EntityType Element (CSDL)

Elemen EntityType mewakili struktur konsep tingkat atas, seperti pelanggan atau pesanan, dalam model konseptual. Jenis entitas adalah templat untuk instans jenis entitas dalam aplikasi. Setiap template berisi informasi berikut:

  • Nama yang unik. (Wajib)
  • Kunci entitas yang ditentukan oleh satu atau beberapa properti. (Wajib)
  • Properti untuk berisi data. (Opsional.)
  • Properti navigasi yang memungkinkan navigasi dari salah satu akhirasosiasi ke akhir lainnya. (Opsional.)

Dalam aplikasi, instans dari jenis entitas mewakili objek tertentu (seperti pelanggan atau pesanan tertentu). Setiap instans jenis entitas harus memiliki kunci entitas unik dalam kumpulan entitas.

Dua instans jenis entitas dianggap sama hanya jika mereka memiliki jenis yang sama dan nilai kunci entitasnya sama.

Elemen EntityType dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Kunci (nol atau satu elemen)
  • Properti (nol atau lebih elemen)
  • NavigationProperty (nol atau lebih elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen EntityType .

Nama Atribut Diperlukan Nilai
Nama Ya Nama jenis entitas.
BaseType Tidak Nama jenis entitas lain yang merupakan jenis dasar dari jenis entitas yang sedang ditentukan.
Abstrak Tidak Benar atau Salah, tergantung pada apakah jenis entitas adalah jenis abstrak.
OpenType Tidak True atau False tergantung pada apakah jenis entitas adalah jenis entitas terbuka.
[!NOTE]
> Atribut OpenType hanya berlaku untuk jenis entitas yang ditentukan dalam model konseptual yang digunakan dengan ADO.NET Data Services.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen EntityType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityType dengan tiga elemen Properti dan dua elemen NavigationProperty:

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

 

 

Elemen EnumType (CSDL)

Elemen EnumType mewakili jenis enumerasi.

Elemen EnumType dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Anggota (nol atau lebih elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen EnumType .

Nama Atribut Diperlukan Nilai
Nama Ya Nama jenis entitas.
IsFlags Tidak Benar atau Salah, tergantung pada apakah jenis enum dapat digunakan sebagai sekumpulan bendera. Nilai defaultnya adalah False..
UnderlyingType Tidak Edm.Byte, Edm.Int16, Edm.Int32, Edm.Int64 atau Edm.SByte menentukan rentang nilai jenis.   Jenis elemen enumerasi default yang mendasar adalah Edm.Int32..

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen EnumType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EnumType dengan tiga elemen Anggota :

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

 

 

Elemen Fungsi (CSDL)

Elemen Fungsi dalam bahasa definisi skema konseptual (CSDL) digunakan untuk menentukan atau mendeklarasikan fungsi dalam model konseptual. Fungsi didefinisikan dengan menggunakan elemen DefiningExpression.  

Elemen Fungsi dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Parameter (nol atau lebih elemen)
  • MenentukanExpression (nol atau satu elemen)
  • ReturnType (Fungsi) (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Jenis pengembalian untuk fungsi harus ditentukan dengan elemen ReturnType (Function) atau atribut ReturnType (lihat di bawah), tetapi tidak keduanya. Jenis pengembalian yang mungkin adalah EdmSimpleType, jenis entitas, jenis kompleks, jenis baris, atau jenis ref (atau kumpulan salah satu jenis ini).

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen Fungsi .

Nama Atribut Diperlukan Nilai
Nama Ya Nama fungsi.
ReturnType Tidak Jenis yang dikembalikan oleh fungsi .

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Fungsi . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menggunakan elemen Fungsi untuk menentukan fungsi yang mengembalikan jumlah tahun sejak instruktur dipekerjakan.

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

 

 

FunctionImport Element (CSDL)

Elemen FunctionImport dalam bahasa definisi skema konseptual (CSDL) mewakili fungsi yang ditentukan dalam sumber data tetapi tersedia untuk objek melalui model konseptual. Misalnya, elemen Fungsi dalam model penyimpanan dapat digunakan untuk mewakili prosedur tersimpan dalam database. Elemen FunctionImport dalam model konseptual mewakili fungsi yang sesuai dalam aplikasi Entity Framework dan dipetakan ke fungsi model penyimpanan dengan menggunakan elemen FunctionImportMapping. Ketika fungsi dipanggil dalam aplikasi, prosedur tersimpan yang sesuai dijalankan dalam database.

Elemen FunctionImport dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen diizinkan)
  • Parameter (nol atau lebih elemen yang diizinkan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)
  • ReturnType (FunctionImport) (nol atau lebih elemen yang diizinkan)

Satu elemen Parameter harus didefinisikan untuk setiap parameter yang diterima fungsi.

Jenis pengembalian untuk fungsi harus ditentukan dengan elemen ReturnType (FunctionImport) atau atribut ReturnType (lihat di bawah), tetapi tidak keduanya. Nilai jenis pengembalian harus berupa kumpulan EdmSimpleType, EntityType, atau ComplexType.

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen FunctionImport .

Nama Atribut Diperlukan Nilai
Nama Ya Nama fungsi yang diimpor.
ReturnType Tidak Jenis yang dikembalikan fungsi. Jangan gunakan atribut ini jika fungsi tidak mengembalikan nilai. Jika tidak, nilai harus berupa kumpulan ComplexType, EntityType, atau EDMSimpleType.
EntitySet Tidak Jika fungsi mengembalikan kumpulan jenis entitas, nilai EntitySet harus menjadi entitas yang diatur ke tempat koleksi berada. Jika tidak, atribut EntitySet tidak boleh digunakan.
Dapat Dikomposisikan Tidak Jika nilai diatur ke true, fungsi dapat dikomposit (Fungsi bernilai tabel) dan dapat digunakan dalam kueri LINQ.  Defaultnya adalah false.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen FunctionImport . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen FunctionImport yang menerima satu parameter dan mengembalikan kumpulan jenis entitas:

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

 

 

Elemen Kunci (CSDL)

Elemen Kunci adalah elemen turunan dari elemen EntityType dan menentukan kunci entitas (properti atau sekumpulan properti jenis entitas yang menentukan identitas). Properti yang membentuk kunci entitas dipilih pada waktu desain. Nilai properti kunci entitas harus mengidentifikasi instans jenis entitas secara unik dalam entitas yang ditetapkan saat run time. Properti yang membentuk kunci entitas harus dipilih untuk menjamin keunikan instans dalam kumpulan entitas. Elemen Kunci mendefinisikan kunci entitas dengan merujuk satu atau beberapa properti jenis entitas.

Elemen Key dapat memiliki elemen turunan berikut:

  • PropertyRef (satu atau beberapa elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Kunci . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

Contoh

Contoh di bawah ini mendefinisikan jenis entitas bernama Buku. Kunci entitas didefinisikan dengan mereferensikan properti ISBN dari jenis entitas.

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

 

Properti ISBN adalah pilihan yang baik untuk kunci entitas karena International Standard Book Number (ISBN) secara unik mengidentifikasi buku.

Contoh berikut menunjukkan jenis entitas (Penulis) yang memiliki kunci entitas yang terdiri dari dua properti, Nama dan Alamat.

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

 

Menggunakan Nama dan Alamat untuk kunci entitas adalah pilihan yang wajar, karena dua penulis dengan nama yang sama tidak mungkin hidup di alamat yang sama. Namun, pilihan untuk kunci entitas ini tidak benar-benar menjamin kunci entitas unik dalam kumpulan entitas. Menambahkan properti, seperti AuthorId, yang dapat digunakan untuk mengidentifikasi penulis secara unik akan direkomendasikan dalam kasus ini.

 

Elemen Anggota (CSDL)

Elemen Member adalah elemen turunan dari elemen EnumType dan mendefinisikan anggota dari jenis enumerasi.

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen FunctionImport .

Nama Atribut Diperlukan Nilai
Nama Ya Nama anggota.
Nilai Tidak Nilai anggota. Secara default, anggota pertama memiliki nilai 0, dan nilai setiap enumerator berturut-turut bertambah 1. Beberapa anggota dengan nilai yang sama mungkin ada.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen FunctionImport . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EnumType dengan tiga elemen Anggota :

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

 

 

Elemen NavigationProperty menentukan properti navigasi, yang menyediakan referensi ke ujung asosiasi lainnya. Tidak seperti properti yang ditentukan dengan elemen Properti, properti navigasi tidak menentukan bentuk dan karakteristik data. Mereka menyediakan cara untuk menavigasi hubungan antara dua jenis entitas.

Perhatikan bahwa properti navigasi bersifat opsional pada kedua jenis entitas di akhir asosiasi. Jika Anda menentukan properti navigasi pada satu tipe entitas di akhir asosiasi, Anda tidak perlu mendefinisikan properti navigasi pada jenis entitas di ujung asosiasi lainnya.

Tipe data yang dikembalikan oleh properti navigasi ditentukan oleh perkalian akhir asosiasi jarak jauhnya. Misalnya, properti navigasi, OrdersNavProp, ada pada jenis entitas Pelanggan dan menavigasi asosiasi satu-ke-banyak antara Pelanggan dan Pesanan. Karena akhir asosiasi jarak jauh untuk properti navigasi memiliki banyak perkalian (*), jenis datanya adalah kumpulan (dari Urutan). Demikian pula, jika properti navigasi, CustomerNavProp, ada pada jenis entitas Pesanan , jenis datanya akan menjadi Pelanggan karena kelipatan ujung jarak jauh adalah satu (1).

Elemen NavigationProperty dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen NavigationProperty .

Nama Atribut Diperlukan Nilai
Nama Ya Nama properti navigasi.
Relasi Ya Nama asosiasi yang berada dalam cakupan model.
ToRole Ya Akhir asosiasi di mana navigasi berakhir. Nilai atribut ToRole harus sama dengan nilai salah satu atribut Peran yang ditentukan pada salah satu akhir asosiasi (didefinisikan dalam elemen AssociationEnd).
FromRole Ya Akhir asosiasi dari mana navigasi dimulai. Nilai atribut FromRole harus sama dengan nilai salah satu atribut Peran yang ditentukan pada salah satu akhir asosiasi (didefinisikan dalam elemen AssociationEnd).

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen NavigationProperty . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut mendefinisikan jenis entitas (Buku) dengan dua properti navigasi (PublishedBy dan WrittenBy):

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

 

 

Elemen OnDelete (CSDL)

Elemen OnDelete dalam bahasa definisi skema konseptual (CSDL) mendefinisikan perilaku yang terhubung dengan asosiasi. Jika atribut Tindakan diatur ke Kaskade di salah satu ujung asosiasi, jenis entitas terkait di ujung lain asosiasi akan dihapus saat jenis entitas di akhir pertama dihapus. Jika kaitan antara dua jenis entitas adalah hubungan kunci utama ke kunci primer, maka objek dependen yang dimuat dihapus ketika objek utama di ujung lain asosiasi dihapus terlepas dari spesifikasi OnDelete .  

Catatan

Elemen OnDelete hanya memengaruhi perilaku runtime aplikasi; elemen tersebut tidak memengaruhi perilaku di sumber data. Perilaku yang ditentukan dalam sumber data harus sama dengan perilaku yang ditentukan dalam aplikasi.

 

Elemen OnDelete dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen OnDelete .

Nama Atribut Diperlukan Nilai
Tindakan Ya Kaskade atau Tidak Ada. Jika Cascade, jenis entitas dependen akan dihapus saat jenis entitas utama dihapus. Jika Tidak Ada, jenis entitas dependen tidak akan dihapus saat jenis entitas utama dihapus.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Asosiasi . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Asosiasi yang menentukan asosiasi CustomerOrders . Elemen OnDelete menunjukkan bahwa semua Pesanan yang terkait dengan Pelanggan tertentu dan telah dimuat ke dalam ObjectContext akan dihapus saat Pelanggan dihapus.

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

 

 

Elemen Parameter (CSDL)

Elemen Parameter dalam bahasa definisi skema konseptual (CSDL) dapat menjadi turunan dari elemen FunctionImport atau elemen Function.

Aplikasi FunctionImport Element

Elemen Parameter (sebagai turunan dari elemen FunctionImport) digunakan untuk menentukan parameter input dan output untuk impor fungsi yang dideklarasikan dalam CSDL.

Elemen Parameter dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen diizinkan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Atribut yang Berlaku

Tabel berikut menjelaskan atribut yang dapat diterapkan ke elemen Parameter .

Nama Atribut Diperlukan Nilai
Nama Ya Nama parameter.
Jenis Ya Jenis parameter Nilai harus berupa EDMSimpleType atau jenis kompleks yang berada dalam cakupan model.
Mode Tidak Dalam, Keluar, atau InOut tergantung pada apakah parameter adalah parameter input, output, atau input/output.
MaxLength Tidak Panjang maksimum parameter yang diizinkan.
Presisi Tidak Presisi parameter.
Skala Tidak Skala parameter.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk parameter jenis spasial. Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server).

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Parameter . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen FunctionImport dengan satu elemen turunan Parameter. Fungsi menerima satu parameter input dan mengembalikan kumpulan jenis entitas.

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

 

Aplikasi Elemen Fungsi

Elemen Parameter (sebagai turunan dari elemen Fungsi) mendefinisikan parameter untuk fungsi yang ditentukan atau dideklarasikan dalam model konseptual.

Elemen Parameter dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • CollectionType (nol atau satu elemen)
  • ReferenceType (nol atau satu elemen)
  • RowType (nol atau satu elemen)

Catatan

Hanya salah satu elemen CollectionType, ReferenceType, atau RowType yang dapat menjadi elemen turunan dari elemen Properti .

 

  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Catatan

Elemen anotasi harus muncul setelah semua elemen anak lainnya. Elemen anotasi hanya diizinkan di CSDL v2 dan yang lebih baru.

 

Atribut yang Berlaku

Tabel berikut menjelaskan atribut yang dapat diterapkan ke elemen Parameter .

Nama Atribut Diperlukan Nilai
Nama Ya Nama parameter.
Jenis Tidak Jenis parameter Parameter dapat berupa salah satu jenis berikut (atau koleksi dari jenis ini):
EdmSimpleType
jenis entitas
jenis kompleks
jenis baris
jenis referensi
Dapat diubah ke null Tidak True (nilai default) atau False tergantung pada apakah properti dapat memiliki nilai null .
DefaultValue Tidak Nilai default properti .
MaxLength Tidak Panjang maksimum nilai properti.
FixedLength Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string panjang tetap.
Presisi Tidak Presisi nilai properti.
Skala Tidak Skala nilai properti.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk properti jenis spasial. Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server).
Unicode Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string Unicode.
Kolase Tidak String yang menentukan urutan penyatuan yang akan digunakan dalam sumber data.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Parameter . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Fungsi yang menggunakan satu elemen anak Parameter untuk menentukan parameter fungsi.

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

 

Elemen Utama (CSDL)

Elemen Utama dalam bahasa definisi skema konseptual (CSDL) adalah elemen turunan ke elemen ReferentialConstraint yang menentukan akhir utama dari batasan referensial. Elemen ReferentialConstraint mendefinisikan fungsionalitas yang mirip dengan batasan integritas referensial dalam database relasional. Dengan cara yang sama seperti kolom (atau kolom-kolom) dari tabel database dapat mereferensikan kunci primer tabel lain, properti (atau properti-properti) dari jenis entitas dapat mereferensikan kunci entitas dari jenis entitas lain. Jenis entitas yang direferensikan disebut akhir prinsipal batasan. Jenis entitas yang mereferensikan akhir prinsipal disebut akhir dependen dari batasan. Elemen PropertyRef digunakan untuk menentukan kunci mana yang direferensikan oleh akhir dependen.

Elemen Utama dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • PropertyRef (satu atau beberapa elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen Utama .

Nama Atribut Diperlukan Nilai
Peran Ya Nama jenis entitas pada akhir utama asosiasi.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Utama . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen ReferentialConstraint yang merupakan bagian dari definisi asosiasi PublishedBy . Properti Id dari jenis entitas Penerbit membentuk akhir utama dari batasan referensial.

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

 

 

Elemen Properti (CSDL)

Elemen Properti dalam bahasa definisi skema konseptual (CSDL) dapat menjadi turunan dari elemen EntityType, elemen ComplexType, atau elemen RowType.

Aplikasi Elemen EntityType dan ComplexType

Elemen properti (sebagai turunan elemen EntityType atau ComplexType ) menentukan bentuk dan karakteristik data yang akan dimuat instans jenis entitas atau instans jenis kompleks. Properti dalam model konseptual dianalogikan dengan properti yang ditentukan pada kelas. Dengan cara yang sama bahwa properti pada kelas menentukan bentuk kelas dan membawa informasi tentang objek, properti dalam model konseptual menentukan bentuk jenis entitas dan membawa informasi tentang instans jenis entitas.

Elemen Properti dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Elemen Dokumentasi (nol atau satu elemen diizinkan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Faset berikut dapat diterapkan ke elemen Properti : Nullable, DefaultValue, MaxLength, FixedLength, Presisi, Scale, Unicode, Collation, ConcurrencyMode. Faset adalah atribut XML yang menyediakan informasi tentang bagaimana nilai properti disimpan di penyimpanan data.

Catatan

Faset hanya dapat diterapkan ke properti jenis EDMSimpleType.

 

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen Properti .

Nama Atribut Diperlukan Nilai
Nama Ya Nama properti.
Jenis Ya Jenis nilai properti. Jenis nilai properti harus berupa EDMSimpleType atau jenis kompleks (ditunjukkan oleh nama yang sepenuhnya memenuhi syarat) yang berada dalam cakupan model.
Dapat diubah ke null Tidak True (nilai default) atau False tergantung pada apakah properti dapat memiliki nilai null.
[!NOTE]
> Di CSDL v1, properti jenis kompleks harus memiliki Nullable="False".
DefaultValue Tidak Nilai default properti .
MaxLength Tidak Panjang maksimum nilai properti.
FixedLength Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string panjang tetap.
Presisi Tidak Presisi nilai properti.
Skala Tidak Skala nilai properti.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk properti jenis spasial. Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server).
Unicode Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string Unicode.
Kolase Tidak String yang menentukan urutan penyatuan yang akan digunakan dalam sumber data.
ConcurrencyMode Tidak Tidak ada (nilai default) atau Tetap. Jika nilai diatur ke Tetap, nilai properti akan digunakan dalam pemeriksaan konkurensi optimis.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Properti . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen EntityType dengan tiga elemen Properti :

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

 

Contoh berikut menunjukkan elemen ComplexType dengan lima elemen Properti :

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

 

Aplikasi Elemen RowType

Elemen properti (sebagai turunan dari elemen RowType ) menentukan bentuk dan karakteristik data yang dapat diteruskan ke atau dikembalikan dari fungsi yang ditentukan model.  

Elemen Properti dapat memiliki salah satu elemen turunan berikut:

  • CollectionType
  • ReferenceType
  • RowType

Elemen Properti dapat memiliki elemen anotasi turunan angka apa pun.

Catatan

Elemen anotasi hanya diizinkan di CSDL v2 dan yang lebih baru.

 

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen Properti .

Nama Atribut Diperlukan Nilai
Nama Ya Nama properti.
Jenis Ya Jenis nilai properti.
Dapat diubah ke null Tidak True (nilai default) atau False tergantung pada apakah properti dapat memiliki nilai null.
[!NOTE]
> Di CSDL v1, properti jenis kompleks harus memiliki Nullable="False".
DefaultValue Tidak Nilai default properti .
MaxLength Tidak Panjang maksimum nilai properti.
FixedLength Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string panjang tetap.
Presisi Tidak Presisi nilai properti.
Skala Tidak Skala nilai properti.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk properti jenis spasial. Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server).
Unicode Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string Unicode.
Kolase Tidak String yang menentukan urutan penyatuan yang akan digunakan dalam sumber data.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Properti . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Properti yang digunakan untuk menentukan bentuk jenis pengembalian fungsi yang ditentukan model.

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

 

 

Elemen PropertyRef (CSDL)

Elemen PropertyRef dalam bahasa definisi skema konseptual (CSDL) mereferensikan properti jenis entitas untuk menunjukkan bahwa properti akan melakukan salah satu peran berikut:

  • Bagian dari kunci entitas (properti atau sekumpulan properti dari jenis entitas yang menentukan identitas). Satu atau beberapa elemen PropertyRef dapat digunakan untuk menentukan kunci entitas.
  • Akhir dependen atau utama dari batasan referensial.

Elemen PropertyRef hanya dapat memiliki elemen anotasi (nol atau lebih) sebagai elemen turunan.

Catatan

Elemen anotasi hanya diizinkan di CSDL v2 dan yang lebih baru.

 

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen PropertyRef .

Nama Atribut Diperlukan Nilai
Nama Ya Nama properti yang dirujuk.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen PropertyRef . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh di bawah ini mendefinisikan jenis entitas (Buku). Kunci entitas didefinisikan dengan mereferensikan properti ISBN dari jenis entitas.

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

 

Dalam contoh berikutnya, dua elemen PropertyRef digunakan untuk menunjukkan bahwa dua properti (Id dan PublisherId) adalah ujung utama dan dependen dari batasan referensial.

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

 

 

Elemen ReferenceType (CSDL)

Elemen ReferenceType dalam bahasa definisi skema konseptual (CSDL) menentukan referensi ke jenis entitas. Elemen ReferenceType bisa menjadi turunan dari elemen berikut:

  • ReturnType (Fungsi)
  • Parameter
  • CollectionType

Elemen ReferenceType digunakan saat menentukan parameter atau jenis pengembalian untuk fungsi.

Elemen ReferenceType dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut yang dapat diterapkan ke elemen ReferenceType .

Nama Atribut Diperlukan Nilai
Jenis Ya Nama jenis entitas yang dirujuk.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen ReferenceType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen ReferenceType yang digunakan sebagai anak dari elemen Parameter dalam fungsi yang ditentukan model yang menerima referensi ke jenis entitas Orang:

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

 

Contoh berikut menunjukkan elemen ReferenceType yang digunakan sebagai anak dari elemen ReturnType (Function) dalam fungsi yang ditentukan model yang mengembalikan referensi ke jenis entitas Orang :

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

 

 

Elemen ReferentialConstraint (CSDL)

Elemen ReferentialConstraint dalam bahasa definisi skema konseptual (CSDL) mendefinisikan fungsionalitas yang mirip dengan batasan integritas referensial dalam database relasional. Dengan cara yang sama seperti kolom (atau kolom-kolom) dari tabel database dapat mereferensikan kunci primer tabel lain, properti (atau properti-properti) dari jenis entitas dapat mereferensikan kunci entitas dari jenis entitas lain. Jenis entitas yang direferensikan disebut akhir prinsipal batasan. Jenis entitas yang mereferensikan akhir prinsipal disebut akhir dependen dari batasan.

Jika kunci asing yang diekspos pada satu jenis entitas mereferensikan properti pada jenis entitas lain, elemen ReferentialConstraint menentukan hubungan antara dua jenis entitas. Karena elemen ReferentialConstraint menyediakan informasi tentang bagaimana dua jenis entitas terkait, tidak ada elemen AssociationSetMapping yang sesuai yang diperlukan dalam bahasa spesifikasi pemetaan (MSL). Hubungan antara dua jenis entitas yang tidak memiliki kunci asing yang terekspos harus memiliki elemen AssociationSetMapping yang sesuai untuk memetakan informasi asosiasi ke sumber data.

Jika kunci asing tidak diekspos pada jenis entitas, elemen ReferentialConstraint hanya dapat menentukan batasan kunci utama ke kunci primer antara jenis entitas dan jenis entitas lain.

Elemen ReferentialConstraint dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Utama (tepat satu elemen)
  • Dependen (tepat satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Elemen ReferentialConstraint dapat memiliki sejumlah atribut anotasi (atribut XML kustom). Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

Contoh

Contoh berikut menunjukkan elemen ReferentialConstraint yang digunakan sebagai bagian dari definisi asosiasi PublishedBy .

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

 

 

Elemen ReturnType (Function) (CSDL)

Elemen ReturnType (Function) dalam bahasa definisi skema konseptual (CSDL) menentukan jenis pengembalian untuk fungsi yang ditentukan dalam elemen Fungsi. Jenis pengembalian fungsi juga dapat ditentukan dengan atribut ReturnType .

Jenis pengembalian dapat berupa EdmSimpleType, jenis entitas, jenis kompleks, jenis baris, jenis ref, atau kumpulan salah satu jenis ini.

Jenis pengembalian fungsi dapat ditentukan dengan atribut Jenis elemen ReturnType (Function), atau dengan salah satu elemen turunan berikut:

  • CollectionType
  • ReferenceType
  • RowType

Catatan

Model tidak akan memvalidasi jika Anda menentukan jenis pengembalian fungsi dengan atribut Jenis elemen ReturnType (Function) dan salah satu elemen turunan.

 

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen ReturnType (Function).

Nama Atribut Diperlukan Nilai
ReturnType Tidak Jenis yang dikembalikan oleh fungsi .

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen ReturnType (Fungsi). Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menggunakan elemen Fungsi untuk menentukan fungsi yang mengembalikan jumlah tahun buku telah dicetak. Perhatikan bahwa jenis pengembalian ditentukan oleh atribut Jenis elemen ReturnType (Fungsi).

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

 

 

Elemen ReturnType (FunctionImport) (CSDL)

Elemen ReturnType (FunctionImport) dalam bahasa definisi skema konseptual (CSDL) menentukan jenis pengembalian untuk fungsi yang ditentukan dalam elemen FunctionImport. Jenis pengembalian fungsi juga dapat ditentukan dengan atribut ReturnType .

Jenis pengembalian dapat berupa kumpulan jenis entitas apa pun, jenis kompleks, atau EdmSimpleType,

Jenis pengembalian fungsi ditentukan dengan atribut Jenis elemen ReturnType (FunctionImport).

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen ReturnType (FunctionImport).

Nama Atribut Diperlukan Nilai
Jenis Tidak Jenis yang dikembalikan fungsi. Nilai harus berupa kumpulan ComplexType, EntityType, atau EDMSimpleType.
EntitySet Tidak Jika fungsi mengembalikan kumpulan jenis entitas, nilai EntitySet harus menjadi entitas yang diatur ke tempat koleksi berada. Jika tidak, atribut EntitySet tidak boleh digunakan.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen ReturnType (FunctionImport). Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menggunakan FunctionImport yang mengembalikan buku dan penerbit. Perhatikan bahwa fungsi mengembalikan dua set hasil dan oleh karena itu dua elemen ReturnType (FunctionImport) ditentukan.

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

 

 

Elemen RowType (CSDL)

Elemen RowType dalam bahasa definisi skema konseptual (CSDL) mendefinisikan struktur yang tidak disebutkan namanya sebagai parameter atau jenis pengembalian untuk fungsi yang ditentukan dalam model konseptual.

Elemen RowType bisa menjadi turunan dari elemen berikut:

  • CollectionType
  • Parameter
  • ReturnType (Fungsi)

Elemen RowType dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Properti (satu atau beberapa)
  • Elemen anotasi (nol atau lebih)

Atribut yang Berlaku

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen RowType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

Contoh

Contoh berikut menunjukkan fungsi yang ditentukan model yang menggunakan elemen CollectionType untuk menentukan bahwa fungsi mengembalikan kumpulan baris (seperti yang ditentukan dalam elemen RowType ).

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

Elemen Skema (CSDL)

Elemen Skema adalah elemen akar dari definisi model konseptual. Ini berisi definisi untuk objek, fungsi, dan kontainer yang membentuk model konseptual.

Elemen Skema mungkin berisi nol atau beberapa elemen turunan berikut:

  • Menggunakan
  • EntityContainer
  • EntityType
  • EnumType
  • Asosiasi
  • ComplexType
  • Fungsi

Elemen Skema mungkin berisi nol atau satu elemen Anotasi.

Catatan

Elemen Fungsi dan elemen anotasi hanya diizinkan di CSDL v2 dan yang lebih baru.

 

Elemen Skema menggunakan atribut Namespace untuk menentukan namespace untuk jenis entitas, jenis kompleks, dan objek asosiasi dalam model konseptual. Dalam namespace, tidak ada dua objek yang dapat memiliki nama yang sama. Namespace dapat mencakup beberapa elemen Skema dan beberapa file .csdl.

Namespace layanan model konseptual berbeda dari namespace XML elemen Skema . Namespace layanan model konseptual (seperti yang didefinisikan oleh atribut Namespace ) adalah kontainer logis untuk jenis entitas, jenis kompleks, dan jenis asosiasi. Namespace XML (ditunjukkan oleh atribut xmlns ) dari elemen Skema adalah namespace default untuk elemen turunan dan atribut elemen Skema . Namespace XML formulir https://schemas.microsoft.com/ado/YYYY/MM/edm (di mana YYYY dan MM masing-masing mewakili satu tahun dan bulan) dicadangkan untuk CSDL. Elemen dan atribut kustom tidak dapat berada di namespace layanan yang memiliki formulir ini.

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut dapat diterapkan ke elemen Skema .

Nama Atribut Diperlukan Nilai
Namespace Layanan Ya Namespace model konseptual. Nilai atribut Namespace digunakan untuk membentuk nama jenis yang sepenuhnya memenuhi syarat. Misalnya, jika EntityType bernama Pelanggan berada di namespace Simple.Example.Model, maka nama EntityType yang sepenuhnya memenuhi syarat adalah SimpleExampleModel.Customer.
String berikut tidak dapat digunakan sebagai nilai untuk atribut Namespace : System, Transient, atau Edm. Nilai untuk atribut Namespace tidak boleh sama dengan nilai untuk atribut Namespace di elemen Skema SSDL.
Alias Tidak Pengidentifikasi yang digunakan sebagai pengganti nama namespace. Misalnya, jika EntityType bernama Pelanggan berada di namespace Simple.Example.Model dan nilai atribut Alias adalah Model, maka Anda dapat menggunakan Model.Customer sebagai nama EntityType yang sepenuhnya memenuhi syarat.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Skema . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Skema yang berisi elemen EntityContainer, dua elemen EntityType, dan satu elemen Asosiasi.

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

 

 

Elemen TypeRef (CSDL)

Elemen TypeRef dalam bahasa definisi skema konseptual (CSDL) menyediakan referensi ke jenis bernama yang ada. Elemen TypeRef dapat menjadi turunan dari elemen CollectionType, yang digunakan untuk menentukan bahwa fungsi memiliki koleksi sebagai parameter atau jenis pengembalian.

Elemen TypeRef dapat memiliki elemen turunan berikut (dalam urutan yang tercantum):

  • Dokumentasi (nol atau satu elemen)
  • Elemen anotasi (nol atau lebih elemen)

Atribut yang Berlaku

Tabel berikut ini menjelaskan atribut yang dapat diterapkan ke elemen TypeRef . Perhatikan bahwa atribut DefaultValue, MaxLength, FixedLength, Presisi, Skala, Unicode, dan Kolase hanya berlaku untuk EDMSimpleTypes.

Nama Atribut Diperlukan Nilai
Jenis Tidak Nama jenis yang dirujuk.
Dapat diubah ke null Tidak True (nilai default) atau False tergantung pada apakah properti dapat memiliki nilai null.
[!NOTE]
> Di CSDL v1, properti jenis kompleks harus memiliki Nullable="False".
DefaultValue Tidak Nilai default properti .
MaxLength Tidak Panjang maksimum nilai properti.
FixedLength Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string panjang tetap.
Presisi Tidak Presisi nilai properti.
Skala Tidak Skala nilai properti.
SRID Tidak Pengidentifikasi Referensi Sistem Spasial. Hanya berlaku untuk properti jenis spasial. Untuk informasi selengkapnya, lihat SRID dan SRID (SQL Server).
Unicode Tidak True atau False tergantung pada apakah nilai properti akan disimpan sebagai string Unicode.
Kolase Tidak String yang menentukan urutan penyatuan yang akan digunakan dalam sumber data.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen CollectionType . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan fungsi yang ditentukan model yang menggunakan elemen TypeRef (sebagai turunan dari elemen CollectionType ) untuk menentukan bahwa fungsi menerima kumpulan jenis entitas Departemen .

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

 

 

Menggunakan Element (CSDL)

Elemen Using dalam bahasa definisi skema konseptual (CSDL) mengimpor konten model konseptual yang ada di namespace yang berbeda. Dengan mengatur nilai atribut Namespace , Anda dapat merujuk ke jenis entitas, jenis kompleks, dan jenis asosiasi yang ditentukan dalam model konseptual lain. Lebih dari satu elemen Menggunakan dapat menjadi anak dari elemen Skema .

Catatan

Elemen Using di CSDL tidak berfungsi persis seperti pernyataan penggunaan dalam bahasa pemrograman. Dengan mengimpor namespace dengan pernyataan penggunaan dalam bahasa pemrograman, Anda tidak memengaruhi objek di namespace asli. Di CSDL, namespace yang diimpor dapat berisi jenis entitas yang berasal dari jenis entitas di namespace asli. Ini dapat memengaruhi kumpulan entitas yang dideklarasikan di namespace asli.

 

Elemen Menggunakan dapat memiliki elemen turunan berikut:

  • Dokumentasi (nol atau satu elemen diizinkan)
  • Elemen anotasi (nol atau lebih elemen yang diizinkan)

Atribut yang Berlaku

Tabel di bawah ini menjelaskan atribut dapat diterapkan ke elemen Menggunakan .

Nama Atribut Diperlukan Nilai
Namespace Layanan Ya Nama namespace layanan yang diimpor.
Alias Ya Pengidentifikasi yang digunakan sebagai pengganti nama namespace. Meskipun atribut ini diperlukan, atribut ini tidak diharuskan untuk digunakan sebagai pengganti nama namespace layanan untuk memenuhi syarat nama objek.

 

Catatan

Sejumlah atribut anotasi (atribut XML kustom) dapat diterapkan ke elemen Menggunakan . Namun, atribut kustom mungkin bukan milik namespace XML apa pun yang dicadangkan untuk CSDL. Nama yang sepenuhnya memenuhi syarat untuk dua atribut kustom tidak boleh sama.

 

Contoh

Contoh berikut menunjukkan elemen Menggunakan yang digunakan untuk mengimpor namespace layanan yang ditentukan di tempat lain. Perhatikan bahwa namespace untuk elemen Skema yang ditampilkan adalah BooksModel. Properti Address padaPublisher EntityType adalah jenis kompleks yang ditentukan dalam ExtendedBooksModel namespace (diimpor dengan elemen Using).

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

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

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

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

 </Schema>

 

 

Atribut Anotasi (CSDL)

Atribut anotasi dalam bahasa definisi skema konseptual (CSDL) adalah atribut XML kustom dalam model konseptual. Selain memiliki struktur XML yang valid, berikut ini harus benar dari atribut anotasi:

  • Atribut anotasi tidak boleh berada di namespace XML apa pun yang dicadangkan untuk CSDL.
  • Lebih dari satu atribut anotasi dapat diterapkan ke elemen CSDL tertentu.
  • Nama yang sepenuhnya memenuhi syarat dari dua atribut anotasi tidak boleh sama.

Atribut anotasi dapat digunakan untuk memberikan metadata tambahan tentang elemen dalam model konseptual. Metadata yang terkandung dalam elemen anotasi dapat diakses pada runtime dengan menggunakan kelas di namespace System.Data.Metadata.Edm.

Contoh

Contoh berikut menunjukkan elemen EntityType dengan atribut anotasi (CustomAttribute). Contohnya juga menunjukkan elemen anotasi yang diterapkan ke elemen jenis entitas.

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

 

Kode berikut mengambil metadata dalam atribut anotasi dan menulisnya ke konsol:

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

 

Kode di atas mengasumsikan bahwa School.csdl file berada di direktori output proyek dan Anda telah menambahkan pernyataan dan Using berikut Imports ke proyek Anda:

 using System.Data.Metadata.Edm;

 

 

Elemen Anotasi (CSDL)

Elemen anotasi dalam bahasa definisi skema konseptual (CSDL) adalah elemen XML kustom dalam model konseptual. Selain memiliki struktur XML yang valid, berikut ini harus benar dari elemen anotasi:

  • Elemen anotasi tidak boleh berada di namespace XML apa pun yang dicadangkan untuk CSDL.
  • Lebih dari satu elemen anotasi mungkin merupakan anak dari elemen CSDL tertentu.
  • Nama yang sepenuhnya memenuhi syarat dari dua elemen anotasi tidak boleh sama.
  • Elemen anotasi harus muncul setelah semua elemen turunan lainnya dari elemen CSDL tertentu.

Elemen anotasi dapat digunakan untuk memberikan metadata tambahan tentang elemen dalam model konseptual. Dimulai dengan .NET Framework versi 4, metadata yang terkandung dalam elemen anotasi dapat diakses pada runtime dengan menggunakan kelas di namespace System.Data.Metadata.Edm.

Contoh

Contoh berikut menunjukkan elemen EntityType dengan elemen anotasi (CustomElement). Contohnya juga menunjukkan atribut anotasi yang diterapkan ke elemen jenis entitas.

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

 

Kode berikut mengambil metadata dalam elemen anotasi dan menulisnya ke konsol:

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

 

Kode di atas mengasumsikan bahwa file School.csdl ada di direktori output proyek dan Anda telah menambahkan pernyataan dan Using berikut Imports ke proyek Anda:

 using System.Data.Metadata.Edm;

 

 

Jenis Model Konseptual (CSDL)

Bahasa definisi skema konseptual (CSDL) mendukung serangkaian jenis data primitif abstrak, yang disebut EDMSimpleTypes, yang menentukan properti dalam model konseptual. EDMSimpleTypes adalah proksi untuk jenis data primitif yang didukung di lingkungan penyimpanan atau hosting.

Tabel di bawah ini mencantumkan jenis data primitif yang didukung oleh CSDL. Tabel juga mencantumkan faset yang dapat diterapkan ke setiap EDMSimpleType.

EDMSimpleType Deskripsi Faset yang Berlaku
Edm.Binary Berisi data biner. MaxLength, FixedLength, Nullable, Default
Edm.Boolean Berisi nilai benar atau salah. Dapat Diubah ke Null, Default
Edm.Byte Berisi nilai bilangan bulat 8-bit yang tidak ditandai. Presisi, Dapat Diubah ke Null, Default
Edm.DateTime Mewakili tanggal dan waktu. Presisi, Dapat Diubah ke Null, Default
Edm.DateTimeOffset Berisi tanggal dan waktu sebagai offset dalam hitungan menit dari GMT. Presisi, Dapat Diubah ke Null, Default
Edm.Desimal Berisi nilai numerik dengan presisi dan skala tetap. Presisi, Dapat Diubah ke Null, Default
Edm.Double Berisi angka titik mengambang dengan presisi 15 digit Presisi, Dapat Diubah ke Null, Default
Edm.Float Berisi angka titik mengambang dengan presisi 7 digit. Presisi, Dapat Diubah ke Null, Default
Edm.Guid Berisi pengidentifikasi unik 16 byte. Presisi, Dapat Diubah ke Null, Default
Edm.Int16 Berisi nilai bilangan bulat 16-bit yang ditandai. Presisi, Dapat Diubah ke Null, Default
Edm.Int32 Berisi nilai bilangan bulat 32-bit yang ditandai. Presisi, Dapat Diubah ke Null, Default
Edm.Int64 Berisi nilai bilangan bulat 64-bit yang ditandai. Presisi, Dapat Diubah ke Null, Default
Edm.SByte Berisi nilai bilangan bulat 8-bit yang ditandai. Presisi, Dapat Diubah ke Null, Default
Edm.String Berisi data karakter. Unicode, FixedLength, MaxLength, Kolase, Presisi, Dapat Diubah ke Null, Default
Edm.Time Berisi waktu hari. Presisi, Dapat Diubah ke Null, Default
Edm.Geography Nullable, Default, SRID
Edm.GeographyPoint Nullable, Default, SRID
Edm.GeographyLineString Nullable, Default, SRID
Edm.GeographyPolygon Nullable, Default, SRID
Edm.GeographyMultiPoint Nullable, Default, SRID
Edm.GeographyMultiLineString Nullable, Default, SRID
Edm.GeographyMultiPolygon Nullable, Default, SRID
Edm.GeographyCollection Nullable, Default, SRID
Edm.Geometry Nullable, Default, SRID
Edm.GeometryPoint Nullable, Default, SRID
Edm.GeometryLineString Nullable, Default, SRID
Edm.GeometryPolygon Nullable, Default, SRID
Edm.GeometryMultiPoint Nullable, Default, SRID
Edm.GeometryMultiLineString Nullable, Default, SRID
Edm.GeometryMultiPolygon Nullable, Default, SRID
Edm.GeometryCollection Nullable, Default, SRID

Faset (CSDL)

Faset dalam bahasa definisi skema konseptual (CSDL) mewakili batasan pada properti jenis entitas dan jenis kompleks. Faset muncul sebagai atribut XML pada elemen CSDL berikut:

  • Properti
  • TypeRef
  • Parameter

Tabel berikut ini menjelaskan faset yang didukung di CSDL. Semua faset bersifat opsional. Beberapa faset yang tercantum di bawah ini digunakan oleh Kerangka Kerja Entitas saat membuat database dari model konseptual.

Catatan

Untuk informasi tentang jenis data dalam model konseptual, lihat Jenis Model Konseptual (CSDL).

Facet Deskripsi Berlaku untuk Digunakan untuk pembuatan database Digunakan oleh runtime
Kolase Menentukan susunan urutan (atau urutan pengurutan) yang akan digunakan saat melakukan operasi perbandingan dan pengurutan pada nilai properti. Edm.String Ya Tidak
ConcurrencyMode Menunjukkan bahwa nilai properti harus digunakan untuk pemeriksaan konkurensi optimis. Semua properti EDMSimpleType Tidak Ya
Default Menentukan nilai default properti jika tidak ada nilai yang disediakan setelah instantiation. Semua properti EDMSimpleType Ya Ya
FixedLength Menentukan apakah panjang nilai properti dapat bervariasi. Edm.Binary, Edm.String Ya Tidak
MaxLength Menentukan panjang maksimum nilai properti. Edm.Binary, Edm.String Ya Tidak
Dapat diubah ke null Menentukan apakah properti dapat memiliki nilai null . Semua properti EDMSimpleType Ya Ya
Presisi Untuk properti jenis Desimal, menentukan jumlah digit yang dapat dimiliki nilai properti. Untuk properti jenis Time, DateTime, dan DateTimeOffset, menentukan jumlah digit untuk bagian pecahan detik dari nilai properti. Edm.DateTime, Edm.DateTimeOffset, Edm.Decimal, Edm.Time Ya Tidak
Skala Menentukan jumlah digit di sebelah kanan titik desimal untuk nilai properti. Edm.Desimal Ya Tidak
SRID Menentukan ID Sistem Referensi Sistem Spasial. Untuk informasi selengkapnya, lihat SRID dan 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 Tidak Ya
Unicode Menunjukkan apakah nilai properti disimpan sebagai Unicode. Edm.String Ya Ya

Catatan

Saat membuat database dari model konseptual, Wizard Buat Database akan mengenali nilai atribut StoreGeneratedPattern pada elemen Properti jika berada di namespace layanan berikut: https://schemas.microsoft.com/ado/2009/02/edm/annotation. Nilai yang didukung untuk atribut adalah Identitas dan Komputasi. Nilai Identitas akan menghasilkan kolom database dengan nilai identitas yang dihasilkan dalam database. Nilai Komputasi akan menghasilkan kolom dengan nilai yang dihitung dalam database.

Contoh

Contoh berikut menunjukkan faset yang diterapkan ke properti jenis entitas:

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