2009-06-23 14 views
0

세션에 액세스하려고 할 때 Nhibernate가 잠시 멈추는 경우가 있습니다.FluentNHibernate 및 세션을 인식하지 못함

CurrentSessionContext가 구성되지 않았습니다 (current_session_context_class 등록 정보 설정).

XML 구성을 사용하고 있지 않습니다.

[SetUp] 
     public void Initialize() 
     { 
      _session = GetSessionFactory().OpenSession(); 
      _transaction = _session.BeginTransaction(); 

      SetupContext(); 
      When(); 
     } 

을 한 후 나는 현재 세션에 액세스 할 저장소를 사용하고 있습니다 :

내 시험에서 세션을 개방하고있다. 저장소가 다른 dll에 있습니다.

public void Save(Category newCategory) 
     { 
      var session = SessionFactory.GetSession(); 
      session.SaveOrUpdate(newCategory); 
     } 





    public static ISession GetSession() 
     { 
      var session = _sessionFactory.GetCurrentSession(); 

      if (session == null) 
       return _sessionFactory.OpenSession(); 

      return session; 
     } 

UPDATE : 내 BaseTest.cs 클래스에서

나는 또한 분해가 :

[분해] 공공 무효 정리() { _session.Dispose(); _transaction.Dispose(); }

디버깅하는 동안 CleanUp이 실행되고 _session 개체가 죽는 것처럼 보입니다!

또 다른 업데이트 : 나는 구성을 구축하는 다음 코드를 추가했습니다 :

public static ISessionFactory CreateSessionFactory() 
     { 
      _sessionFactory = 
       Fluently.Configure().Database(
        MsSqlConfiguration.MsSql2000.ConnectionString(
         c => c.FromConnectionStringWithKey("ConnectionString"))) 
         .Mappings(m => 
     m.FluentMappings.AddFromAssemblyOf<Category>()) 
     **.ExposeConfiguration(x => 
     { 
      x.SetProperty("current_session_context_class", 
    "thread_static"); 
     })** 
     .BuildSessionFactory(); 

      return _sessionFactory; 
     } 

지금 나는 다음과 같은 오류 얻을 :

+0

이 해결나요? – DevelopingChris

답변

2

는 당신이 필요로하는 현재 컨텍스트에 바인딩

없음 세션을 세션을 현재 컨텍스트에 바인드합니다.

var session = SessionFactory.OpenSession(); 
CurrentSessionContext.Bind(session); 

그리고 teardown 방법

은 : 다음 setup 방법에서

var session = CurrentSessionContext.Unbind(SessionFactory); 
session.Dispose(); 
관련 문제