6

我正在尝试实现可能需要利用 Redis 的缓存模式。这种模式的问题是我需要禁用 Configuration.ProxyCreationEnabled 然后重新启用它以避免跨网络场的任何问题。

我想做的是从 IQueryable 访问 DbContext ,这样我就可以一次而不是到处执行此操作。最简单的方法是将正在使用的 DbContext 传递到我的缓存扩展中,但是我遇到了这篇文章:

访问 IQueryable 后面的 DataContext

有没有一种方法可以使用 EF 4.1 Code Fist(DbSet 等)以与上述链接类似的方式访问 DbContext?

我试图自己找到这个,但很难使用反射从 IQueryable 中引用的 DbSet 中找到基类。

4

1 回答 1

7

IQueryable 后面的 Access DataContext 中提到的解决方案是一种 hack,不应使用。它依赖于实现 IQueryable 的类中的私有成员变量的名称。这意味着实现类可能会在 EF/.NET Framework 的未来版本中发生更改并破坏您的代码。由于无法通过 IQueryable 接口访问 DbContext,因此应将其传递到缓存扩展中以避免对 IQueryable 实现做出假设。这样做还将更清楚地在缓存接口中建立对 DbContext 的依赖关系,而不是将其埋在实现中。

于 2011-09-05T16:09:42.993 回答