我有一个 ASP.NET 应用程序,它使用 NHibernate 在用户操作时以事务方式更新一些表。涉及到一个日期范围,其中只能对表格“预订”进行一个条目,以便指定排他日期。
我的问题是如何防止竞争条件,即两个用户操作几乎同时发生并导致多个条目进入“预订”>1 日期。我不能在调用 .Commit() 之前检查,因为我认为这仍然会导致竞争条件?
我所能看到的只是在提交后进行检查并手动回滚更改,但这让我的嘴巴感觉很糟糕!:)
booking_ref (INT) PRIMARY_KEY AUTOINCREMENT
预订开始(日期时间)
预订结束(日期时间)