有什么方法可以知道 EF4 当前是否处于水合自我跟踪实体 (STE) 的过程中

发布于 2024-10-11 05:15:23 字数 231 浏览 2 评论 0原文

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

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

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

谢谢, 内特

I have the need to perform some custom logic in my EF 4 STE public getters and setters. However, I only want this custom logic to execute if EF is not currently hydrating an entity.

Are there any built in flags, statuses or object states that can be checked to determine if EF is currently in the act of hydrating a STE entity on my behalf?

I am not doing lazy loading, so we perform all our data loading in one shot. I'm hoping I don't have to change the Entity T4 templates to add the infrastructure to track this stuff myself.

Thanks,
Nate

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜点 2024-10-18 05:15:23

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

  • 使用方法 SavingStarted、SavingFinished 为所有 STE 定义接口
  • 在 STE 模板中实现这些方法,以便能够打开和关闭您的标志
  • 修改 STE 中的 getter 和 setter 定义 标志一起使用的模板
  • 与ObjectContext 上的 Override SaveChanges
  • 。迭代可转换为接口的修改实体并调用 SavingStarted
  • 调用 base.SaveChanges
  • 再次迭代该实体并调用 SavingFinished

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

No there is no such flag but you can try to do it this way:

  • Define interface for all your STEs with methods SavingStarted, SavingFinished
  • Implement these methods in STE template to be ablet to turn your flag on and off
  • Modify getters and setters definition in STE template to work with flag
  • Override SaveChanges on your ObjectContext.
  • Iterate through modified entities which are convertible to your interface and call SavingStarted
  • Call base.SaveChanges
  • Again iterate through that entities and call SavingFinished

The only problem is that these methods will be part of STE's public interface. To avoid this you can implement these methods in ObjectContext and access STE's internal property with flag. This is possible only when STEs and ObjectContext are in the same assembly or InternalsVisibleTo is used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文