0

これが私の簡単な状況です。ほとんどのビジネスに共通しています...

  • アイテムで構成される注文があるとします。【親子】
  • システムには、UserA と UserB の 2 人のユーザーがいます。
  • UserA は、3 つのアイテムを含む注文を作成します。そしてそれをデータベースに保存します。
  • 一方、UserB は UserA が直前に保存した Order を開いて、Items of Order を読み込みます。
  • 次に、UserA が Orders から Item 1 を削除して保存します。全て大丈夫
  • 最後に、UserB は項目 3 を削除し、保存を試みます...

そしてNHibernateは「StaleObjectStateException」を与えます...

では、İtem1 と Item3 が削除され、"StaleObjectStateException" が発生しないように、この状況をどのように処理すればよいでしょうか... NHibernate で?

4

1 に答える 1

2

例外をキャッチし、アイテムが他の誰かによって既に更新されていることをユーザーに知らせ、データベースからエンティティをリロードし、新しいデータを確認した後に何をすべきかをユーザーに決定させる必要があると思います。

ユーザーが同じエンティティを同時に編集できないようにする場合は、ペシミスティック ロックを使用することもできます。

同時実行制御戦略の詳細については、NHibernate のドキュメントを参照してください。

Ayende Rahien のこの投稿も非常に参考になります。

于 2012-06-12T15:32:21.983 に答える