Entity framework 4 有没有办法知道EF4目前是否正在对自跟踪实体(STE)进行水合作用

Entity framework 4 有没有办法知道EF4目前是否正在对自跟踪实体(STE)进行水合作用,entity-framework-4,self-tracking-entities,Entity Framework 4,Self Tracking Entities,我需要在EF 4 STE公共getter和setter中执行一些自定义逻辑。但是,我只希望在EF当前未水合实体时执行此自定义逻辑 是否有任何可以检查的内置标志、状态或对象状态,以确定EF当前是否代表我水合STE实体 我没有做惰性加载,所以我们一次完成所有数据加载。我希望我不必更改实体T4模板来添加自己跟踪这些内容的基础设施 谢谢, Nate不,没有这样的标志,但您可以尝试这样做: 使用方法SavingStarted、savingsfinished为所有STE定义接口 在STE模板中实现这些方法

我需要在EF 4 STE公共getter和setter中执行一些自定义逻辑。但是,我只希望在EF当前未水合实体时执行此自定义逻辑

是否有任何可以检查的内置标志、状态或对象状态,以确定EF当前是否代表我水合STE实体

我没有做惰性加载,所以我们一次完成所有数据加载。我希望我不必更改实体T4模板来添加自己跟踪这些内容的基础设施

谢谢,
Nate

不,没有这样的标志,但您可以尝试这样做:

  • 使用方法SavingStarted、savingsfinished为所有STE定义接口
  • 在STE模板中实现这些方法,以便能够打开和关闭标记
  • 修改STE模板中的getter和setter定义以使用标志
  • 覆盖ObjectContext上的SaveChanges
  • 遍历可转换为接口的修改实体,并调用SavingStarted
  • 调用base.SaveChanges
  • 再次遍历该实体并调用SavingFinished
唯一的问题是这些方法将成为STE公共接口的一部分。为了避免这种情况,您可以在ObjectContext中实现这些方法,并使用flag访问STE的内部属性。只有当STE和ObjectContext位于同一程序集中或使用InternalsVisibleTo时,这才可能实现