共通のデータベースを共有する 2 つの別個のアプリケーション (どちらも同じシステムの一部) があります。1 つのアプリケーションは、外界との通信を担当する「ゲートウェイ」であり、もう 1 つは、LAN 上のローカル ユーザーがローカル データベース内のデータの読み取り/変更/更新に使用するデスクトップ クライアントです。
特定の間隔で、ゲートウェイ アプリケーションは、さまざまな Web サービスから新しいデータをローカル データベースにダウンロードします。同様に、ゲートウェイ アプリケーションはローカル データベースへの変更 (ユーザーがデスクトップ クライアント経由で行ったもの) をスキャンし、それらの変更を適切な Web サービスにアップロードします。
2 つのデータベースが使用されています。1 つは本番用、もう 1 つはテスト/デバッグ用です。ゲートウェイは、app.config の接続文字列を変更することで、2 つの間で切り替えます。
ゲートウェイ アプリケーションをテストするときは、読み取り専用で動作させたいと考えています。つまり、新しいデータを (テスト/デバッグ) データベースにダウンロードすることはできますが、変更を Web サービスにアップロードして戻すことはできません。
これを実現する方法は、アプリケーションが次のようにデータをアップロードする場所で #IF DEBUG ディレクティブを使用することです。
public void DetectAndUploadChanges()
{
Uploader Up = new Uploader();
Up.DetectChanges();
#IF !DEBUG
Up.UploadChanges();
#END IF
}
この方法は、コードが何らかの種類の変更をアップロードできるすべての場所で debug ディレクティブを使用することを覚えていることに依存しています。
この種のことを行うためのより良い/代替方法はありますか?