有无论如何验证会话是否已被NHibernate处理?NHibernate会话ObjectDisposedException
我在Session上有一个包装类,它有它自己的Finalizer和IDispoable实现,但是如果Session在我自己在我的类中处理之前就被处置了,我最终会收到一个ObjectDisposedException。
我真的不希望我的包裹清理代码
try {
...
}
catch (ObjectDisposedException) { }
但我真的不知道任何其他方式。 Session.IsOpen和Session.IsActive属性似乎没有提供任何可靠的信息让我确认会话已被处置。
如需完整的源代码,您可以在Assembla上查看。
我得到异常的唯一地方是在.Reconnect当会话已被NH处置时,出于某种原因,当它被释放时它仍然可以拥有Session.IsOpen = true。这是我见过的最荒谬的事情之一,即使在处置之后,未清财产仍然是真实的。 – 2009-02-04 14:29:01
我使用NH的SessionFactory来创建会话我不知道如何让它使用自定义会话类,而不是下载源代码并对其进行修改。但是,如果我只是想这样做,我只会在Dispose()在IsOpen返回false的会话上调用它。 – 2009-02-04 14:32:58
“Session已经被NHibernate处置了”?在什么情况下会发生?自从我和NHibernate一起玩的时候已经有一段时间了,但我不记得它曾经处理过一个会话本身。 – Quibblesome 2009-02-04 18:58:14