共用方式為


ComplexType 項目 (CSDL)

ComplexType 項目定義由 EdmSimpleType 屬性或其他複雜類型組成的資料結構。 如需 EdmSimpleType 的詳細資訊,請參閱概念模型型別。 複雜類型可以是實體類型的屬性或另一個複雜類型的屬性。 複雜類型與實體類型相似之處在於複雜類型會定義資料。 不過,複雜型別和實體類型之間還是有些重大的差異:

  • 複雜型別不具有識別 (或索引鍵),因此無法獨立存在。 複雜型別只能以實體類型或其他複雜型別的屬性形式存在。

  • 複雜類型不可參與關聯。 關聯的兩個端點皆不可為複雜型別,因此不可為複雜型別定義導覽屬性

  • 雖然複雜型別的純量屬性可能每個都設為 null,但複雜型別屬性不可以有 null 值。

ComplexType 項目可以擁有下列子項目 (依列出的順序):

下表描述的屬性可套用至 ComplexType 項目。

屬性名稱 必要

Name

複雜類型的名稱。 複雜類型的名稱不可與其他複雜類型、實體類型或模型範圍內之關聯的名稱相同。

BaseType

其他複雜類型的名稱是即將定義之複雜類型的基底型別。

Cc716799.note(zh-tw,VS.100).gif注意:
此屬性不適用於命名空間 https://schemas.microsoft.com/ado/2006/04/edm 指出的 CSDL 版本。該版本不支援複雜類型的繼承。

Abstract

TrueFalse (預設值) 取決於複雜類型是否為抽象型別。

Cc716799.note(zh-tw,VS.100).gif注意:
此屬性不適用於命名空間 https://schemas.microsoft.com/ado/2006/04/edm 指出的 CSDL 版本。該版本的複雜類型不可以是抽象型別。

Cc716799.note(zh-tw,VS.100).gif注意:
可以將任何數量的註釋屬性 (自訂 XML 屬性) 套用至 ComplexType 項目。不過,自訂屬性不可屬於任何 XML 命名空間,這是保留供 CSDL 使用。任兩個自訂屬性的完整名稱不能相同。

範例

下列範例示範複雜類型 (Address) 搭配 EdmSimpleType 屬性 StreetAddressCityStateOrProvinceCountryPostalCode

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

若要將上方的複雜類型 Address 定義為實體類型的屬性,您必須在實體類型定義中宣告屬性型別。 下列範例示範 Address 屬性 (為實體類型 (Publisher) 上的複雜類型):

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

另請參閱

概念

Entity Framework 概觀
CSDL 規格
Schema 項目 (CSDL)
EntityType 項目 (CSDL)
複雜型別物件

其他資源

CSDL、SSDL 和 MSL 規格
ADO.NET Entity Data Model Tools
complex type (Entity Data Model)