2

プログラムを作成していますが、2つのSQLServerデータベースが必要です。1つはクライアントに、もう1つはサーバーにあります。プログラムでインターネット接続を確認したいのですが、ユーザーがインターネットに接続している場合はサーバーデータベースが使用され、オフラインの場合はクライアントデータベースが使用され、ユーザーがインターネットに接続するとサーバーデータベースが更新されます。クライアントデータベース。

2つのデータベースはまったく同じであり、同じテーブルを持っているので、どうすればこれを行うことができますか?接続文字列とdbmlファイルの内容を意味します。

4

2 に答える 2

3

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))
    {
        ...
    }
于 2012-08-28T09:51:01.403 に答える
0

MicrosoftSyncFrameworkを調べる必要があります。それはそれ自体から言う:

任意のデータタイプ、任意のデータストア、任意の転送プロトコル、および任意のネットワークトポロジをサポートする、アプリケーション、サービス、およびデバイスのコラボレーションとオフラインアクセスを可能にする包括的な同期プラットフォーム。

そして、それはあなたのシナリオを正確にカバーするためにすべてが準備されています。

于 2012-08-28T09:54:44.580 に答える