導覽屬性是實體類型的選擇性屬性,允許從關聯一端巡覽到另一端。 與其他 屬性不同,導覽屬性不會攜帶數據。
導覽屬性定義包括以下項目:
名稱。 (必要項)
它所導航的關聯。 (必要項)
其巡覽之關聯的結尾。 (必要項)
關聯末端的兩個實體類型都具有選擇性的導覽屬性。 如果您在關聯結尾的一個實體類型上定義導覽屬性,就不需要在關聯另一端的實體類型上定義導覽屬性。
導覽屬性的數據類型取決於其遠端關聯端的多重性。 例如,假設在實體類型 OrdersNavProp 上有一個名為 Customer 的導覽屬性,它在 Customer 和 Order 之間導航一對多的關聯。 導覽屬性的遠端關聯端因具有多重性(*),其資料類型為 Order 的集合。 同樣地,如果導覽屬性 CustomerNavProp存在於實體類型上 Order ,其數據類型會是 Customer,因為遠端端的多重性是一個 (1)。
範例
下圖顯示具有三種實體類型的概念模型: Book、 Publisher和 Author。 導覽屬性 Publisher 和 Authors 定義於 Book 實體類型上。 導覽屬性 Books 定義於 Publisher 實體類型和 Author 實體類型上。
ADO.NET Entity Framework 會使用稱為概念架構定義語言 (CSDL) 的網域特定語言 (DSL) 來定義概念模型。 下列 CSDL 定義如上圖所示的實體類型:
<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>
XML 屬性可用來傳達定義導覽屬性所需的信息:屬性 Name 包含屬性的名稱、 Relationship 包含所巡覽的關聯名稱,以及 FromRole 包含 ToRole 關聯結尾。