さまざまなプロジェクトで使用するロギング コンポーネントである DLL があります。このログ コンポーネントは完全に自己完結型であるように設計されているため、データベース接続文字列を内部に持つ必要があります。このプロジェクトでは、その接続文字列をそれを使用するプロジェクトの app.config にコピーすることを要求することはまったく受け入れられません。
これは何年もうまく機能してきましたが、古い ADO 技術を EF を使用する新しいアプリと組み合わせると、ロギングが行われているときにひどいパフォーマンスになることがわかりました。たとえば、アプリケーションの起動時に 1 つのログ エントリを追加すると、アプリが開くまでに 30 秒を超える遅延が発生します。
これに対抗するために、EF を使用するようにこのコンポーネントを書き直しました。
問題は、現在の EF (.Net Framework 4.0 をターゲットにしているためバージョン 4.4) では、接続文字列全体を指定できるようにする DBContext へのコンストラクターが提供されていないことです。コードは Database.Connection.ConnectionString を変更しようとしますが、DBContext オブジェクトは、新しい接続文字列を指定しているにもかかわらず、App.Config で接続文字列を探すことを要求します。
この動作を回避する必要があります。