我正在使用 NHibernate 来保存要求这些对象的属性之一必须是唯一的对象。该系统的设计使得有时可能会尝试两次保存相同的对象。这当然会导致违反唯一性约束并且 NHibernate 会抛出异常。异常发生在我尝试保存对象时,而不是在 Transaction.Commit() 时间。发生这种情况时,我想简单地捕获异常,丢弃对象并继续保存其他类似的对象。但是,我还没有找到允许这种情况发生的方法。一旦发生该异常,我就无法继续保存其他对象并提交事务。
我发现的唯一解决方法是始终通过对唯一属性运行查询来检查对象是否存在。这行得通,但它似乎不必要地昂贵。我想避免对数据库的额外打击。有没有办法做到这一点?
谢谢