18

NHibernate を使用して楽観的/悲観的な同時実行をどのようにサポートしますか?

4

3 に答える 3

22

NHibernate は、2 種類の楽観的並行性をサポートしています。

マッピング ファイルの "class" 要素で "optimistic-lock=dirty" 属性を使用してダーティ フィールドをチェックするか、"optimistic-lock=version" (これもデフォルトです) を使用できます。バージョンを使用している場合は、データベースのフィールドにマップするマッピング ファイルに「バージョン」要素を指定する必要があります。

バージョンは、Int64、Int32、Int16、Ticks、Timestamp、または TimeSpan のタイプで、保存時に自動的にインクリメントされます。詳細については、NHibernate のドキュメントの第 5 章を参照してください。

于 2008-09-23T01:08:19.850 に答える
17

NHibernate は、デフォルトで楽観的並行性をサポートします。一方、悲観的並行性は、このISession.Lock()メソッドを使用して実現できます。

これらの問題については、このドキュメントで詳しく説明します。

于 2008-09-23T01:03:59.690 に答える
2

バージョン番号を「ただ」手動で比較することもできます (エンティティに Version プロパティを追加したと仮定します)。

明らかに楽観的が唯一の健全な選択肢です。もちろん、クレイジーなシナリオに対処しなければならないこともありますが...

于 2008-10-15T08:28:54.007 に答える