屬性 (實體資料模型)
「屬性」(Property) 是實體類型和複雜類型的基本建置組塊。 屬性可定義實體類型執行個體或複雜類型執行個體將包含的資料圖案和特性。 概念模型中的屬性類似類別中定義的屬性。 如同類別上的屬性可定義類別的圖形並包含關於物件的資訊一樣,概念模型的屬性可定義實體類別的圖案,並包含關於實體類型執行個體的資訊。
注意: |
---|
如本章所述,屬性與導覽屬性不同。如需詳細資訊,請參閱導覽屬性。 |
屬性定義包含下列資訊:
屬性名稱。 (必要項)
屬性型別。 (必要項)
一組 Facet。 (選擇項)
屬性可以包含基本資料 (例如字串、整數或布林值) 或結構化資料 (例如複雜類型)。 屬於基本型別的屬性亦稱為純量屬性。 如需詳細資訊,請參閱實體資料模型:基本資料型別。
注意: |
---|
複雜類型本身可以包含複雜類型的屬性。 |
範例
下圖顯示包含三種實體類型 (Book、Publisher 和 Author) 的概念模型。 雖然圖中並提供每個屬性的型別資訊,但每個實體類型均具有數個屬性。 屬於實體索引鍵的屬性會加註 (索引鍵)。
ADO.NET Entity Framework 會使用稱為概念結構定義語言 (CSDL) 的特定定義域語言 (DSL) 來定義概念模型。 下列 CSDL 定義 Book 實體類型 (如上圖所示),並且使用 XML 屬性 (attribute) 指出各個屬性 (property) 的型別和名稱。 Nullable (選擇性 Facet) 也是使用 XML 屬性所定義。
<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>
圖中顯示的其中一個屬性可能會是複雜類型屬性。 例如,Publisher實體型別上的 Address 屬性可能是複雜類型屬性,由數個包純量屬性組成,例如 StreetAddress、City、StateOrProvince、Country 和 PostalCode。 此類複雜類型的 CSDL 表示如下所示:
<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>