私はここでいくつかの悪い解決策の間に立ち往生しているように感じ、将来の苦痛を最小限に抑える方法についていくつかのアドバイスが必要です。Massive ORMを使用しています。これは、コンストラクターに次の行があります。
var _providerName = "System.Data.SqlClient";
if (ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName != null)
_providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName;
_factory = DbProviderFactories.GetFactory(_providerName);
ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
ここで私にとって重要な部分は、から接続文字列を読み取ることですConfigurationManager
。構成を一元化しようとしています。これを行う際に、接続文字列をweb / app.configsから除外します(約150のホストがデプロイされているため、オーバーヘッドが大きくなっています)。ただし、ここで読み取られた構成ファイルがハードコーディングされており、ConnectionStrings
コレクションが読み取り専用であるため、これは機能しなくなります(回避策はありますが、すべてかなりダーティです)。
これを回避する1つの方法は、これらの行を仮想メソッドに抽出してから、継承を使用して変更することです。ただし、Massiveを更新する場合、これはあまり良くありません。また、コンストラクターから仮想メソッドを呼び出すことは潜在的に悪いことです。
他にどのような選択肢がありますか?ここでの主な優先事項は、更新時の影響を最小限に抑えることです。