0

マルチユーザーの winforms アプリケーション (MDI) に取り組んでいます。このアプリケーションは、NHibernate とインスタンスごとに 1 つのセッションを使用します。

問題は、ユーザーが変更を行った場合 (たとえば、ユーザーがリストにアイテムを追加した場合)、別のユーザーがこの変更をすぐに確認できないことです。これを回避するにはどうすればよいですか、推奨されるアプローチは何ですか? One-session-per-form または何か他のものを使用する必要がありますか?

4

1 に答える 1

0

すべてのアプリケーションは、独自の作業単位を定義する必要があります。あなたのユースケースでは、ユーザーがアイテムをリストに追加するたびにデータベースを更新したい場合は、それが作業単位になるはずです。

したがって、独自のユースケースに関する質問に答えるために、新しい NHibernate セッションを作成し、ユーザーの変更を保持し、ユーザーがアイテムをリストに追加するたびにセッションを破棄します。

参考までに: ユーザーのアクションごとにセッションを作成することが、実際にアプリケーションが望んでいる動作である場合、何か問題があるとは思わないでください。通常、WinForms アプリケーションでは、ほとんどの人が Session-per-Form パターンを使用しますが、これもまた、ほとんどの WinForms アプリケーションが、ユーザーが次のフォームに進む前に完了する必要があるフォームを持つモデルに分類されるためです。そのような場合、ユーザーがフォームを送信したときにのみ、ユーザーの変更を永続化/保存する必要があります。しかし、アプリケーションがそのモデルに当てはまらない場合、作業単位 (セッション ライフサイクル) の定義がまったく異なる可能性があります。

于 2012-09-26T20:55:17.287 に答える