2011-09-05 6 views
6

私はRedisを利用する必要のあるキャッシングパターンを実装しようとしています。このパターンの問題は、Webファーム全体の問題を避けるためにConfiguration.ProxyCreationEnabledを無効にしてから再度有効にする必要があることです。IQueryableからのDbContextへのアクセス

私がやりたいことは、IQueryableからDbContextにアクセスすることです。だから私はどこでも代わりにこれを行うことができます。これを行う最も簡単な方法は、私のキャッシュ拡張に使用されているDbContextを渡すことです、しかし、私はこの記事に出くわした:

Access DataContext behind IQueryable

上記のリンクと同様の方法でDbContextにアクセスする方法はありますEF 4.1 Code Fist(DbSetなど)を使用していますか?

私はこれを見つけようとしましたが、リフレクションを使用して、参照されたDbSetからIQueryableのベースクラスを見つけるのに苦労しました。

答えて

5

Access DataContext behind IQueryableに記載されている解決策はハックであり、使用しないでください。これは、IQueryableを実装するクラスのプライベートメンバー変数の名前に依存します。これは、実装クラスがEF/.NET Frameworkの将来のリリースで変更され、コードが破損する可能性があることを意味します。 DbContextはIQueryableインターフェイスからアクセスできないため、IQueryable実装についての前提を避けるために、キャッシング拡張に渡す必要があります。そうすることで、実装に埋め込むのではなく、キャッシングインターフェイスのDbContextへの依存関係をより明確にすることができます。

+0

ありがとうございます。同様の結論に至りましたが、実装を抽象化していいと思っていました。 – didiHamman

関連する問題