定义业务逻辑(实体框架)

通过处理某些操作期间引发的事件(如,对属性或关系的更改),将业务逻辑添加到实体框架 应用程序。 此业务逻辑可能包括在属性发生更改或调用 SaveChanges 方法时创建其他验证或进行日志记录。 您可以通过处理实体框架 引发的事件或定义在更改属性时调用的自定义分部方法,来调用自定义业务逻辑。 本主题列出了一些事件并提供了指向其他相关主题的链接。

事件和分部方法 说明

System.Data.Objects.ObjectContext.ObjectMaterialized

当使用数据源中的数据创建新的实体(作为查询或加载操作的一部分)时引发。 此事件在对某个对象设置了所有标量、复杂和引用属性之后,但在加载集合之前发生。 如果对象上下文中存在具有相同键值的对象,实体框架 将不会重新创建对象,此事件将不会被引发。

System.Data.Objects.ObjectContext.SavingChanges

ObjectContext 执行的 SaveChanges 操作开始时引发。 此事件通常用于在将新值写入数据库前验证更改的对象。

有关更多信息,请参见如何:在保存更改时执行业务逻辑(实体框架)

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

当实体通过删除或分离方法离开上下文,或通过查询或添加并附加方法进入上下文时发生。 有关更多信息,请参见如何:当对象状态发生更改时执行业务逻辑

Dd456876.note(zh-cn,VS.100).gif注意:
如果要使用不含更改跟踪代理的 POCO 实体,则当您调用 DetectChanges 方法或 SaveChanges 方法(这些方法会调用 DetectChanges)时系统会检测到更改。

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

当关联更改时发生。 如果要使用默认代码生成的实体或具有代理对象的 POCO 实体,则在此事件发生的同时,还会更改实际导航属性。

Dd456876.note(zh-cn,VS.100).gif注意:
如果要使用不含代理的 POCO 实体,则当您调用 DetectChanges 方法或 SaveChanges 方法(这些方法会调用 DetectChanges)时系统会检测到更改。

在批量操作(如 LoadAttachClear)期间事件可能会被取消。

有关更多信息,请参见如何:在关联更改过程中执行业务逻辑

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

在标量属性值更改挂起时发生。 实体框架 生成的类会在标量属性的 setter 中调用 ReportPropertyChangingReportPropertyChanging 方法会引发 PropertyChanging 事件。 处理此事件可以在属性值更改前执行业务逻辑,例如写入到日志。 有关更多信息,请参见如何:在标量属性更改过程中执行业务逻辑(实体框架)

当跟踪对实现 IEntityWithChangeTracker 的自定义数据类进行的更改时,必须使用 IEntityChangeTracker 报告属性更改。

Dd456876.note(zh-cn,VS.100).gif注意:
若要在导航属性更改时得到通知,请注册 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 事件。有关更多信息,请参见如何:在关联更改过程中执行业务逻辑

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

在更改标量属性值后发生。 实体框架 生成的类会在标量属性的 setter 中调用 ReportPropertyChangedReportPropertyChanged 方法会引发 PropertyChanged 事件。 处理此事件可以在属性更改时执行业务逻辑,例如写入到日志。 有关更多信息,请参见如何:在标量属性更改过程中执行业务逻辑(实体框架)

当跟踪对实现 IEntityWithChangeTracker 的自定义数据类进行的更改时,必须使用 IEntityChangeTracker 报告属性更改。

Dd456876.note(zh-cn,VS.100).gif注意:
若要在导航属性更改时得到通知,请注册 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 事件。有关更多信息,请参见如何:在关联更改过程中执行业务逻辑

OnContextCreated 方法

实体数据模型 工具会在表示模型的 EntityContainer 且继承自 ObjectContext 类的类中生成一个 OnContextCreated 分部方法。 每当实例化 ObjectContext 时,就会调用此分部方法。 在代码中实现此分部方法可以为 SavingChanges 事件注册一个处理程序。 有关更多信息,请参见如何:在保存更改时执行业务逻辑(实体框架)

On PropertyName ChangingOnPropertyNameChanged

实体数据模型 工具会在标量属性的 set 访问器中为每种实体类型生成分部方法。 OnPropertyNameChanging 分部方法在设置值之前调用。 OnPropertyNameChanged 分部方法在设置值之后调用。 实现这些分部方法以添加业务逻辑。

另请参见

概念

自定义对象(实体框架)

其他资源

Entity Data Model Tools