共用方式為


複雜類型物件 (Entity Framework)

複雜類型是實體類型的非純量屬性,可在實體內組織純量屬性。 如同實體,複雜類型包含純量屬性或其他複雜類型屬性。 複雜類型無法在沒有父實體或複雜類型的情況下存在。 由於複雜類型沒有索引鍵,因此除了父物件以外,複雜類型物件無法由物件服務管理。 如需詳細資訊,請參閱 複雜類型 (EDM)

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

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

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

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

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

  • 當存取複雜類型屬性時,將會具現化繼承自 ComplexObject 的 Complex 物件,而不會具現化父物件。

  • 當自訂資料類別繼承自 EntityObject 時,複雜類型類別必須繼承自 ComplexObject

  • 當您實作自訂資料類別介面時,可以使用複雜類型,例如 IEntityWithKey。 但是,建議的作法是搭配自訂資料類別使用複雜類型,以便同時繼承自 EntityObjectComplexObject。 如需詳細資訊,請參閱自訂物件 (Entity Framework)

另請參閱

其他資源

使用物件 (Entity Framework)