コードファーストでEntityFramework5を使用しています。IDbConnectionFactory
クラスによって作成されたすべての接続に使用するカスタムを作成しDbContext
たので、アプリケーションのライフサイクルの早い段階で、データベース作業が完了する前に、
Database.DefaultConnectionFactory = new MyConnectionFactory();
ただし、MyConnectionFactory.CreateConnection
が呼び出されることはありません。これは、EFが元に戻したことを示していますが、デバッガーは、MyConnectionFactory
いくつかのクエリが実行された後もまだ呼び出されていることを示しています。どういうわけか、それはそれを使用していないだけです。
私DbContext
はapp.configファイルから接続文字列の名前を渡すことによって初期化され、それらの接続文字列は明示的なプロバイダーを指定しているので(実際にそうしなければならないので)、それが接続の接続ごとのオーバーライドを引き起こしているのではないかと思います接続文字列に基づくファクトリ。これは発生しますか?完全に新しいプロバイダーを登録せずに停止できますか(それはそれほど難しいことではありませんが)。
これについてオンラインで見たもの(さまざまなapp.configの例でdefaultConnectionFactoryタグによってかなり隠されている)はIDbConnectionFactory
、選択したインスタンスに変更するだけで機能することを示唆していますが、私の動作はしていません。
これの目的は、新しい接続が開かれるたびに特定のSQLステートメントのセットを実行できるようにすることです。したがって、この質問の2番目の部分は、これを行うためのより良い方法を誰かが知っているかどうかです。