有没有办法知道EF4目前是否正在为自我跟踪实体(STE)提供保湿过程

时间:2011-01-11 01:43:32

标签: entity-framework-4 self-tracking-entities

我需要在我的EF 4 STE公共getter和setter中执行一些自定义逻辑。但是,如果EF 当前正在为实体提供保护,我只希望执行此自定义逻辑。

是否有任何内置的标志,状态或对象状态可以检查以确定EF当前是否代表我保护STE实体的行为?

我没有进行延迟加载,因此我们一次性执行所有数据加载。我希望我不必更改Entity T4模板来添加基础设施来自己跟踪这些内容。

谢谢, 内特

1 个答案:

答案 0 :(得分:0)

没有这样的旗帜,但你可以尝试这样做:

  • 使用SavingStarted,SavingFinished
  • 方法为所有STE定义界面
  • 在STE模板中实施这些方法,以便能够打开和关闭您的旗帜
  • 修改STE模板中的getter和setter定义以使用flag
  • 覆盖ObjectContext上的SaveChanges。
  • 迭代可转换为您的界面并调用SavingStarted
  • 的修改实体
  • 调用base.SaveChanges
  • 再次遍历该实体并调用SavingFinished

唯一的问题是这些方法将成为STE公共接口的一部分。为避免这种情况,您可以在ObjectContext中实现这些方法,并使用flag访问STE的内部属性。仅当STEs和ObjectContext在同一个程序集中或使用InternalsVisibleTo时,才可能这样做。