共用方式為


自訂物件 (Entity Framework)

ADO.NET 實體架構 提供了一些工具來根據 實體資料模型 (EDM) 的概念結構定義語言 (CSDL) 檔案自動產生物件層。這些資料類別可自訂為各種不同的程度 (視應用程式的需求而定)。您也可以修改您自己的自訂資料類別,將它們使用於 EDM。當您從現有的應用程式升級資料類別來使用 實體架構,或是當您對於建立資料類別的方式想要有更大的控制權時,這種處理方式會很實用。

擴充部分資料類別

EDM 中定義的型別並不像物件導向程式設計中使用的類別一樣具有關聯的方法。這些型別只包含 EDM 中所定義的屬性。您可以擴充產生的部分資料類別,以便在物件中加入功能。當資料類別是由 實體資料模型 工具所產生時,會在部分類別中實作資料類別。部分類別會將類別的定義分割成兩個或多個原始程式檔,每一個原始程式檔都包含類別定義的一個區段,而當編譯應用程式時,就會將所有區段結合起來。如需詳細資訊,請參閱Partial (Visual Basic)partial (型別) (C# 參考)

具有部分類別可讓您使用個別原始程式檔中的自訂方法和屬性來擴充這些類別,而不需要擔心會在重新整理產生的檔案時遺失您的自訂內容。如需詳細資訊,請參閱 HOW TO:自訂產生的資料物件 (Entity Framework)

自訂商務邏輯

當使用產生的資料類別時,您可以在某些物件服務作業期間叫用自訂商務邏輯,例如屬性或關聯性的變更。此商務邏輯可包含其他驗證的建立或是記錄何時變更屬性或呼叫 SaveChanges。您可以叫用自訂商務邏輯,其方式是處理物件服務所引發的事件,或是定義自訂部分方法,以便在屬性變更時呼叫這些方法。

下列是用來叫用自訂商務邏輯的事件和方法:

  • On屬性ChangingOn屬性Changed 部分方法
    當屬性變更時,產生之資料類別上的一對部分方法 (物件服務會呼叫這些資料類別)。請擴充部分資料類別中的這些方法,以便實作屬性變更時所要執行的程式碼。如需詳細資訊,請參閱 HOW TO:在屬性變更期間執行商務邏輯 (Entity Framework)

自訂資料類別

在一些情況下,只是藉由加入方法和屬性來擴充部分類別可能無法提供足夠的彈性。假設目前有一個 .NET Framework 應用程式,它使用 ADO.NET 將資料庫中的資料載入 CLR 物件供應用程式使用。這些物件可能包含了必須保存在物件層中的寶貴自訂內容和商務邏輯。這些自訂內容可能會阻礙您將應用程式移轉成使用 實體架構。您可能也會想要對實體類型有更大的控制權,而不僅是擴充產生的部分類別。

搭配 EDM 使用自訂資料類別的建議方式是從 EntityObject 繼承。如果您無法從 EntityObject 繼承,或者不想受到太多架構的限制,Entity Framework 提供了一組可以實作介面,讓您搭配 EDM 使用自訂資料類別。如需詳細資訊,請參閱實作自訂資料類別介面 (Entity Framework)。當您使用自訂資料類別時,您必須將屬性 (Attribute) 套用到自訂資料類別和屬性 (Property),並通知物件內容何時變更屬性 (Property)。

繼承自 EntityObject

產生的資料類別繼承自 EntityObjectComplexObject。如果您必須搭配 EDM 使用自訂資料類別,建議的方法是修改您的資料類別,以便從其中一個基底類別 (Base Class) 繼承。如此一來,自訂資料類別就會因為 EntityObject 所提供的變更追蹤和關聯性管理功能而獲益。

當您繼承自 EntityObjectComplexObject 時,請注意以下幾個要點:

下列範例會定義自訂資料類別 Order,該類別是繼承自 EntityObject

<EdmEntityTypeAttribute(NamespaceName:="Microsoft.Samples.Edm", Name:="Order")> _
Public Class Order
    Inherits EntityObject
[EdmEntityTypeAttribute(NamespaceName="Microsoft.Samples.Edm",Name="Order")]
public class Order : EntityObject 

如需詳細資訊,請參閱 HOW TO:從 EntityObject 和 ComplexObject 基底類別繼承 (Entity Framework)

本節內容

另請參閱

其他資源

物件服務 (Entity Framework)
處理自訂物件 (Entity Framework 工作)