最初に、データベースと直接対話する必要があるかどうかを検討してください。クライアントからではありません。多くの場合、データベース テクノロジに関係なく、クライアントがサービス レイヤー (WebAPI、ServiceStack、WCF など) などの仲介者とやり取りする必要があります。
次に、本当にデータベースと直接やり取りしたいと判断した場合、詳細は他のコードと同じです。
- 実行時に DocumentStore のインスタンスが 1 つだけ存在する必要があります。
- ユーザーのアクティビティごとに新しい DocumentSession を開いて閉じる必要があります。
UI の粒度が粗い場合は、セッション内のエンティティ全体を保存/更新している可能性があります。UI がきめの細かい (例: タスクベースの UI) 場合、各セッションで行う作業は少なくなり、より多くの作業が行われます。
もう 1 つのオプションは、部分的な更新を実行するために raven のPatching APIを使用することですが、通常は必要ではなく、望ましくもありません。ワイヤ トラフィックを減らすためだけに、トランザクションと同時実行例外が失われます。
並行性の問題をどのように処理するかを検討する必要があります。 オプティミスティック コンカレンシーはおそらく良い考えですが、必ず再試行ロジックで例外を処理してください。
SL から来る場合は非同期セッション操作を使用する必要があり、おそらく WPF についても良い考えです。