我有一个开放的 Castle ActiveRecord SessionScope。我需要使用封装到 SessionScope 中的休眠会话。
如何从 SessionScope 检索当前的 NHibernate 会话对象?
非常感谢您的回复。
[更新] 我有这个代码
ISession session = SessionScope.Current.GetSession( );
但我不知道传递给 GetSession 参数的是什么
我有一个开放的 Castle ActiveRecord SessionScope。我需要使用封装到 SessionScope 中的休眠会话。
如何从 SessionScope 检索当前的 NHibernate 会话对象?
非常感谢您的回复。
[更新] 我有这个代码
ISession session = SessionScope.Current.GetSession( );
但我不知道传递给 GetSession 参数的是什么
我用这段代码解决了它:
ISessionFactoryHolder holder = ActiveRecordMediator.GetSessionFactoryHolder();
ISessionScope activeScope = holder.ThreadScopeInfo.GetRegisteredScope();
ISession session = null;
var key = holder.GetSessionFactory(typeof(ActiveRecordBase));
if (activeScope == null)
{
session = holder.CreateSession(typeof(ActiveRecordBase));
}
else
{
if (activeScope.IsKeyKnown(key))
session = activeScope.GetSession(key);
else
session = holder.GetSessionFactory(typeof(ActiveRecordBase)).OpenSession();
}
我认为 Activerecord SessionScope 可以处理不同类型的多个工厂,但如果您不使用它,我认为您最好传入任何类型的持久类:
ISession session = SessionScope.Current.GetSession( typeof ( YourClass ) );