NHibernateを使用してユーザーアクション時にいくつかのテーブルをトランザクションで更新するASP.NETアプリがあります。排他的な日付が指定されるように、テーブル「予約」へのエントリを1つだけ作成できる日付範囲があります。
私の問題は、2つのユーザーアクションがほぼ同時に発生し、1日を超える「予約」に複数のエントリが発生する競合状態を防ぐ方法です。.Commit()を呼び出す直前に確認することはできません。それでも、競合状態のままになると思いますか?
私が見ることができるのは、コミット後にチェックを行い、変更を手動でロールバックすることだけですが、それは私の口に非常に悪い味を残します!:)
Booking_ref(INT)PRIMARY_KEY AUTOINCREMENT
Booking_start(DATETIME)
Booking_end(DATETIME)