屬性是實體類型和複雜類型的基本建置組塊。 屬性會定義實體類型實例或複雜類型實例將包含之數據的圖形和特性。 概念模型中的屬性類似於類別上定義的屬性。 與類別上的屬性定義類別的圖形並攜帶對象相關信息相同,概念模型中的屬性會定義實體類型的圖形,並攜帶實體類型實例的相關信息。
備註
如本主題所述,屬性與導覽屬性不同。 如需詳細資訊,請參閱 導覽屬性。
屬性定義包含下列資訊:
屬性名稱。 (必要項)
屬性類型。 (必要項)
一組 Facet。 (選擇性)
屬性可以包含基本數據(例如字串、整數或布爾值),或結構化數據(例如複雜類型)。 屬於基本類型的屬性也稱為純量屬性。 如需詳細資訊,請參閱 實體數據模型:基本數據類型。
備註
複雜類型本身可以具有複雜類型的屬性。
範例
下圖顯示具有三種實體類型的概念模型: Book、 Publisher和 Author。 雖然圖表中不會傳達每個屬性的類型資訊,但每個實體類型都有數個屬性。 實體 索引鍵 的屬性會以 (Key) 表示。
ADO.NET Entity Framework 會使用稱為概念架構定義語言 (CSDL) 的網域特定語言 (DSL) 來定義概念模型。 下列 CSDL 定義了 Book 實體類型(如上圖所示),並藉由 XML 屬性指出每個屬性的類型和名稱。 選擇性 Facet Nullable也會使用 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>
圖表中顯示的其中一個屬性可能是複雜類型屬性。 例如, Address 實體類型上的 Publisher 屬性可以是由數個純量屬性組成的複雜類型屬性,例如 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>