6

Tôi có một phiên làm việc mở Castle ActiveRecord SessionScope. Tôi cần sử dụng phiên nhibernate được gói vào SessionScope.Cách truy xuất đối tượng Phiên làm việc NHibernate hiện tại từ Castle ActiveRecord SessionScope

Làm cách nào tôi có thể truy xuất đối tượng phiên NHibernate hiện tại từ SessionScope?

cảm ơn bạn rất nhiều vì đã trả lời.

[cập nhật] i có mã này

ISession session = SessionScope.Current.GetSession(); 

nhưng tôi không biết những gì vượt qua các tham số GetSession

Trả lời

0

Tôi nghĩ rằng ActiveRecord SessionScope thể xử lý nhiều nhà máy với nhiều loại khác nhau, nhưng nếu bạn không sử dụng điều đó, tôi nghĩ bạn sẽ tốt để vượt qua trong bất kỳ loại lớp học nào là lớp học tồn tại lâu dài:

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

cảm ơn @jishi nhưng tôi có lỗi này: chìa khóa không có trong bộ sưu tập. – manuellt

+0

Bạn đang sử dụng ActiveRecordFacility với Windsor? – jishi

+0

cảm ơn bạn @ jishi, tôi không sử dụng ActiveRecordFacility với Windsor, nhưng tôi đã thử một giải pháp, tôi đã thử nghiệm nó và hoạt động tốt. cám ơn bạn một lần nữa. – manuellt

9

Tôi r đã giải mã nó bằng mã này:

 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(); 
     } 
Các vấn đề liên quan