Properti navigasi
Properti navigasi adalah properti opsional pada jenis entitas yang memungkinkan navigasi dari satu ujung association ke ujung lainnya. Tidak seperti properti lainnya, properti navigasi tidak membawa data.
Definisi properti navigasi mencakup hal berikut:
Sebuah nama. (Diperlukan)
Asosiasi yang dinavigasinya. (Diperlukan)
Ujung asosiasi yang dinavigasinya. (Diperlukan)
Properti navigasi bersifat opsional pada kedua tipe entitas di ujung 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 properti navigasi ditentukan oleh keberagaman dari ujung asosiasi jarak jauhnya. Misalnya, anggaplah properti navigasi, OrdersNavProp
, ada pada jenis entitas Customer
dan menavigasi hubungan satu-ke-banyak antara Customer
dan Order
. Karena ujung asosiasi jarak jauh untuk properti navigasi memiliki keberagaman banyak (*), jenis datanya adalah kumpulan (dari Order
). Demikian pula, jika properti navigasi, CustomerNavProp
, ada pada jenis entitas Order
, jenis datanya akan menjadi Customer
, karena banyaknya ujung jarak jauh adalah satu (1).
Contoh
Diagram berikut menunjukkan model konseptual dengan tiga jenis entitas: Book
, Publisher
, dan Author
. Properti navigasi Publisher
dan Authors
ditentukan pada jenis entitas Buku. Properti navigasi Books
ditentukan pada jenis entitas Publisher dan jenis entitas Author
.
ADO.NET Entity Framework menggunakan bahasa khusus domain (DSL) yang disebut bahasa definisi skema konseptual (CSDL) untuk mendefinisikan model konseptual. CSDL berikut mendefinisikan jenis entitas Book
yang ditunjukkan dalam diagram di atas:
<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>
Atribut XML digunakan untuk mengomunikasikan informasi yang diperlukan untuk mendefinisikan properti navigasi: Atribut Name
berisi nama properti, Relationship
berisi nama asosiasi yang dinavigasi, dan FromRole
dan ToRole
berisi akhir dari asosiasi.