マルチユーザーの winforms アプリケーション (MDI) に取り組んでいます。このアプリケーションは、NHibernate とインスタンスごとに 1 つのセッションを使用します。
問題は、ユーザーが変更を行った場合 (たとえば、ユーザーがリストにアイテムを追加した場合)、別のユーザーがこの変更をすぐに確認できないことです。これを回避するにはどうすればよいですか、推奨されるアプローチは何ですか? One-session-per-form または何か他のものを使用する必要がありますか?
マルチユーザーの winforms アプリケーション (MDI) に取り組んでいます。このアプリケーションは、NHibernate とインスタンスごとに 1 つのセッションを使用します。
問題は、ユーザーが変更を行った場合 (たとえば、ユーザーがリストにアイテムを追加した場合)、別のユーザーがこの変更をすぐに確認できないことです。これを回避するにはどうすればよいですか、推奨されるアプローチは何ですか? One-session-per-form または何か他のものを使用する必要がありますか?
すべてのアプリケーションは、独自の作業単位を定義する必要があります。あなたのユースケースでは、ユーザーがアイテムをリストに追加するたびにデータベースを更新したい場合は、それが作業単位になるはずです。
したがって、独自のユースケースに関する質問に答えるために、新しい NHibernate セッションを作成し、ユーザーの変更を保持し、ユーザーがアイテムをリストに追加するたびにセッションを破棄します。
参考までに: ユーザーのアクションごとにセッションを作成することが、実際にアプリケーションが望んでいる動作である場合、何か問題があるとは思わないでください。通常、WinForms アプリケーションでは、ほとんどの人が Session-per-Form パターンを使用しますが、これもまた、ほとんどの WinForms アプリケーションが、ユーザーが次のフォームに進む前に完了する必要があるフォームを持つモデルに分類されるためです。そのような場合、ユーザーがフォームを送信したときにのみ、ユーザーの変更を永続化/保存する必要があります。しかし、アプリケーションがそのモデルに当てはまらない場合、作業単位 (セッション ライフサイクル) の定義がまったく異なる可能性があります。