複雜型別物件

複雜型別是實體型別的非純量屬性,可在實體內組織純量屬性。 如同實體,複雜型別包含純量屬性或其他複雜型別屬性。 由於複雜型別沒有索引鍵,因此除了父物件以外,複雜型別物件無法由 Entity Framework 管理。 如需詳細資訊,請參閱ComplexType 項目 (CSDL)

當 Entity Framework 工具產生代表實體類型的物件時,這些物件會繼承自 EntityObject。 同樣地,針對複雜型別產生的物件會繼承自 ComplexObject。 這兩個類別都繼承自 StructuralObject 基底類別 (Base Class)。 複雜型別物件的純量屬性可加以存取,就像其他純量屬性一樣。 如需詳細資訊,請參閱 HOW TO:查詢複雜型別 (Entity Framework)

當您使用代表複雜型別的物件時,請注意以下幾點:

  • 複雜型別不得包含導覽屬性。

  • 複雜型別屬性不得為 null。 當呼叫 SaveChanges 且遇到 null 複雜物件時,就會發生 InvalidOperationException。 如同實體的純量屬性,Complex 物件的純量屬性可以是 null

  • 複雜型別無法繼承自其他複雜型別。

  • 在複雜型別的物件圖形內的任何地方變更任何屬性時,父型別的屬性會標示為已變更,而且當呼叫 SaveChanges 時,會更新複雜型別之物件圖形內的所有屬性。

  • 當物件層是由實體資料模型 工具所產生時,複雜物件就會在存取複雜型別屬性時具現化,而且不會在具現化父物件時具現化。

使用包含複雜型別屬性的 POCO (「單純」的 CLR 物件) 型別時,也適用下列考量:

下列主題將示範如何使用 ADO.NET 實體資料模型設計工具來達成各種包含複雜型別的工作:

How to: Create and Modify Complex Types

How to: Add a Complex Type Property to an Entity

How to: Refactor Existing Properties into a Complex type Property

How to: Map Complex Type Properties to Table Columns

How to: Map a Function Import to a Complex Type

另請參閱

概念

使用物件