如果我在给定会话上调用Flush(),我需要检查将保留的附加实体集。 (我正在编写代码,在保存之前访问Session作为通用管道的一部分,并且可以在任意数量的上下文中使用。)
我发现自己希望有一种像
这样的方法mySession.GetPersistentEntities()
所以我可以检查它们并执行一些预处理。
任何人都知道这样做的方法吗?
谢谢,
杰夫
答案 0 :(得分:4)
不,NHibernate的ISession不公开这样的东西。你可以:
答案 1 :(得分:2)
您可以“入侵”会话上下文:
ISession session;
var sessionContext = session.GetSessionImplementation().PersistenceContext;
foreach(var entity in sessionContext.EntitiesByKey.Values)
{
// do anything with the entity
}
但是,在你的情况下,我会使用flush事件监听器或拦截器。