我得到了众所周知的NHibernate异常“非法尝试将集合与两个打开的会话相关联”。我对它做了研究,我理解它的原因,但我的问题是它在现场随机出现,当我无法调试它时。
我的问题是,有没有办法查询异常或当前的NH状态,找出哪个集合或对象导致这个?
顺便说一句,我确实设法从SessionScope继承,并覆盖了一些函数来添加日志记录,但它本身并没有帮助我解决这个问题。答案 0 :(得分:0)
在抛出异常时附加调试器可以提示您在哪个集合中导致此错误。您可能正在保存特定对象,因此您可以尝试扣除它引用的集合。如果这没有帮助,您可以尝试查找NHibernate会话的实例。在调试器中找到它后,您可以查看session.Statistics。 EntityKeys 和 CollectionKeys 。这些是NHibernate用于跟踪对象的内部结构。希望它有所帮助...