質問

複数のユーザーが、変更から削除し、同時にに追加できることを私は(例えば、TODO項目のリストを)エンティティのリストを持っていると言うことができます。

だから、同期のすべてのクライアントの間で記載されているがmaintaneし、私は、各クライアント(AJAXがベース)は、変更ごとにXX秒をお願いしたいと思います。リストはveeery長く得ることができますので、私は完全な要求を毎回やりたいが、唯一の変更アイテム(アイテムは、更新、削除、または新しいことができます)を要求しません。

これは、ADO.NET Data Servicesで可能ですか?もしそうなら、私は、サーバー上のエンティティフレームワークを使用している場合、どのように私は、それを実装していますか?

私は変更操作がデータサービスに送信されたときの変化の項目を格納し、特定のクライアント最後の要求以降の最新の変更を返すカスタムWebメソッドを持つようにASP.NETsキャッシュを使用すると考えられている(要求を追跡することができ)クライアントASP.NETsセッションオブジェクトを介して。しかし、私は結果セット内の個々の項目(例えば、削除または更新または挿入)の変化状態を示すために、どのようには考えている。

クライアントがサーバーに同じ往復で多くの企業の変更を依頼するために、

偉大な解決策は、それが可能になるだろう。

任意の入力がはるかにappreaciatedされます。

よろしく、エギルます。

役に立ちましたか?

解決

私の心にスプリング方法は、テーブルのための世代番号を使用することです。それに関連付ける(精神的に)グローバルおよび永続世代番号変数をTODOテーブルに世代と呼ばれる列を与えると。 (DB内のテーブルでこれを入れておそらく最高)。

更新または挿入は、世代番号が増分され、更新または挿入されたレコードの世代番号の欄に入れて行われるたびます。

レコードは最初のDBから読み出されたウェブページに置かれている場合、

現在の世代番号も検索され(すなわち、JavaScript変数に入れて)ローカルにキャッシュされています。駆動後続のAJAXは、フィルタローカルにキャッシュされた世代の数よりも多い世代番号を持つレコードのみをwhere句を使用して読み取ります。これが唯一の新しい更新および削除が取得される保証します。ローカルにキャッシュされた世代番号が、その後更新されます。

削除は少しトリッキーです。それを行うための一つの方法は、限られた期間の墓石削除されたレコードにあり、21分は言います。あなたは墓石と呼ばれるビット列と日時の列を持っています。レコードが削除されたときにカラムが世代番号インサートと同じ方法で設定または削除いた、墓石ビットが設定され、日時をのGetDate()を使用して現在の時刻に設定されています。クライアントのAJAX要求は、墓石フラグを設定してレコードを選択して、クライアント側のリストから削除することができます。すべての20分のフルページの更新、またはそれぞれ、すべてのレコードを取得するAJAX呼び出した後、その後、施行されていることをDBジョブは毎分実行し、クリーンアップすることができますように、クライアント(すなわち、削除)廃棄古いレコードより20をコード化している場合分ます。

EDIT:あなたが実際に個別に生成列以上の世代番号、あなたができるSQL関数MAXを永続化する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top