複雜類型物件 (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。 但是,建議的作法是搭配自訂資料類別使用複雜類型,以便同時繼承自 EntityObject 和 ComplexObject。 如需詳細資訊,請參閱自訂物件 (Entity Framework)。