访问 NHibernate ActionQueue 以检查挂起命令列表

Accessing NHibernate ActionQueue to check the list of pending commands

我有一些非常基本的代码:

NHibernate.ISession session = doSomeStuffWithNHibernateSession();

使用 Visual Studio 调试器中的对象检查器,我能够打开会话对象的 ActionQueue 并列出所有待处理的 NHibernate 命令。

有没有办法以编程方式访问它?能够访问 InsertionCountHasAnyQueuedAction 之类的属性就足够了。

这应该有效 (使用明确的类型名称而不是 var 来简化他们在 NH 中的发现)

NHibernate.ISession session = ...

// here we get the access to underling implementation
NHibernate.Impl.SessionImpl sessionImpl = session
    .GetSessionImplementation() as NHibernate.Impl.SessionImpl;

// and we can now work with action queue
var actionQueue = sessionImpl.ActionQueue;

// and check it
var count               = actionQueue.InsertionsCount;
var hasAnyQueuedActions = actionQueue.HasAnyQueuedActions;