定義商務邏輯 (Entity Framework)
藉由處理部分作業 (例如變更屬性或關聯性) 期間所引發的事件,將商務邏輯加入至您的 Entity Framework 應用程式。 這個商務邏輯可能包括在屬性變更或呼叫 SaveChanges 方法時建立額外的驗證或記錄。 藉由處理 Entity Framework 所引發的事件或定義屬性變更時所呼叫之自訂的部分方法,您便可以叫用自訂的商務邏輯。 此主題列出一些事件並提供其他相關主題的連結。
事件和部分方法 | 說明 |
---|---|
在查詢或載入作業中從資料來源中的資料建立新的實體時引發。 此事件會於在物件上設定好所有純量、複雜和參考屬性之後,但在載入集合之前發生。 如果物件內容中已有物件使用相同的索引鍵值,Entity Framework 將不會重新建立物件,而且不會引發此事件。 |
|
在 ObjectContext 上 SaveChanges 作業的開頭引發。 這個事件通常是在新值寫入資料庫之前,用來驗證變更的物件。 如需詳細資訊,請參閱 HOW TO:在儲存變更時執行商務邏輯 (Entity Framework)。 |
|
System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged |
在實體透過刪除或中斷連結方法來離開內容,或是透過查詢或加入與附加方法來進入內容時發生。 如需詳細資訊,請參閱 HOW TO:在物件狀態變更時執行商務邏輯。
注意:
如果您使用沒有變更追蹤 Proxy 的 POCO 實體,則會在您呼叫 DetectChanges 方法或 SaveChanges 方法 (這麼做會呼叫 DetectChanges) 時偵測變更。
|
System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged |
關聯變更時發生。 如果您使用預設的程式碼產生之實體或具有 Proxy 物件的 POCO 實體,則在對實際的導覽屬性進行變更時會同時發生這個事件:
注意:
如果您使用沒有 Proxy 的 POCO 實體,則會在您呼叫 DetectChanges 方法或 SaveChanges 方法 (這麼做會呼叫 DetectChanges) 時偵測變更。
事件可能會在大量作業 (例如 Load、Attach 和 Clear) 期間隱藏。 如需詳細資訊,請參閱 HOW TO:在關聯變更期間執行商務邏輯。 |
System.Data.Objects.DataClasses.StructuralObject.PropertyChanging |
當純量屬性值變更已暫止時發生。 Entity Framework 產生之類別會在純量屬性 setter 中呼叫 ReportPropertyChanging。 ReportPropertyChanging 方法會引發 PropertyChanging 事件。 在屬性值變更之前,請處理這個事件來執行商務邏輯,例如驗證。 如需詳細資訊,請參閱 HOW TO:在純量屬性變更期間執行商務邏輯 (Entity Framework)。 針對會實作 IEntityWithChangeTracker 之自訂資料類別 (Class) 進行追蹤變更時,您必須使用 IEntityChangeTracker 來報告屬性變更。
注意:
若要在導覽屬性變更時收到通知,請登錄 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 事件。如需詳細資訊,請參閱 HOW TO:在關聯變更期間執行商務邏輯。
|
System.Data.Objects.DataClasses.StructuralObject.PropertyChanged |
當純量屬性值已變更時發生。 Entity Framework 產生之類別會在純量屬性 setter 中呼叫 ReportPropertyChanged。 ReportPropertyChanged 方法會引發 PropertyChanged 事件。 當屬性變更時,請處理這個事件來執行商務邏輯,例如寫入記錄檔。 如需詳細資訊,請參閱 HOW TO:在純量屬性變更期間執行商務邏輯 (Entity Framework)。 針對會實作 IEntityWithChangeTracker 之自訂資料類別進行追蹤變更時,您必須使用 IEntityChangeTracker 來報告屬性變更。
注意:
若要在導覽屬性變更時收到通知,請登錄 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 事件。如需詳細資訊,請參閱 HOW TO:在關聯變更期間執行商務邏輯。
|
OnContextCreated 方法 |
實體資料模型 工具會在代表此模型的 EntityContainer 和繼承自 ObjectContext 類別的類別中產生 OnContextCreated 部分方法。 每當 ObjectContext 具現化的時候,就會呼叫這個部分方法。 請在您的程式碼中實作這個部分方法,以登錄 SavingChanges 事件的處理常式。 如需詳細資訊,請參閱 HOW TO:在儲存變更時執行商務邏輯 (Entity Framework)。 |
On PropertyName Changing 和 OnPropertyNameChanged |
實體資料模型 工具會針對每個實體類型,在純量屬性 set 存取子中產生部分方法。 OnPropertyNameChanging 部分方法會在設定值之前呼叫。 OnPropertyNameChanged 部分方法會在設定值之後呼叫。 在其中實作這些部分方法以加入商務邏輯。 |