dbmlについて言及したので、私はLINQ2SQLを想定しました。
クライアント用とサーバー用の2つの接続文字列を追加することをお勧めします。
次に、接続文字列名を取得するDataContext()
コンストラクターを使用して、コンテキストが指すデータベースを判別します。例:ここ
編集
私は次のようなヘルパーメソッド/ファクトリを提案します:
public static MyDataClassesContext GetDataContext(bool isInternetAvailable)
{
if (isInternetAvailable)
{
return new MyDataClassesContext("ServerConnStringName");
}
else
{
return new MyDataClassesContext("LocalConnStringName");
}
}
そして、DataContextsを使用するコードでは:
// Whatever your mechanism is for determining internet availability
// (Note that you probably want to cache this bool lol)
bool isInternetAvailable = GetPingToServer() < 10000 ? true : false;
using (var dc = GetDataContext(isInternetAvailable))
{
...
}