risposta

0

Penso che l'ActiveRecord SessionScope grado di gestire più fabbriche per diversi tipi, ma se non si utilizza che penso che sarebbe bello per passare in qualsiasi tipo di classe che è un persistente uno:

ISession session = SessionScope.Current.GetSession(typeof (YourClass)); 
+0

grazie @jishi ma ho questo errore: la chiave non è nella collezione. – manuellt

+0

Stai usando ActiveRecordFacility con Windsor? – jishi

+0

grazie @jishi, non sto usando ActiveRecordFacility con Windsor, ma ho provato una soluzione, l'ho testata e va bene. grazie ancora. – manuellt

9

I r lo ha risolto con questo codice:

 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(); 
     } 
Problemi correlati