- 使事务的隔离级别为SERIALIZABLE(
session.BeginTransaction(IsolationLevel.Serializable
),然后检查并插入同一事务中。通常,不应仅在这种情况下将隔离级别设置为可序列化。
或者
- 在检查并最终插入之前锁定表。您可以通过nhibernate触发SQL查询来做到这一点:
session.CreateSQLQuery(“选择null作为来自预订WITH(tablockx,holdlock)的虚拟对象”).AddScalar(“
dummy”,NHibernateUtil.Int32); 这将仅锁定该表以在该事务期间进行选择/插入。
希望能有所帮助



