2010-05-28 2 views

답변

0

은 내가 매개 변수로 연결 문자열을 제공하지 않고 OpenSession에 방법을 사용할 수있다이 경우 사용자 정의 DriverConnectionProvider

public class TenantConnectionProvider : DriverConnectionProvider 
{ 
    public override IDbConnection GetConnection() 
    { 
     IDbConnection conn = Driver.CreateConnection(); 
     try 
     { 
      conn.ConnectionString = // Tenant connection string provider called here 
      conn.Open(); 
     } 
     catch (Exception) 
     { 
      conn.Dispose(); 
      throw; 
     } 

     return conn; 


    } 
} 

내 문제를 해결했다.

+0

안녕 Alexey, 당신은 정말로 자신의 질문에 대답하지 않았다 :-) "NHibernate는 세션 생성자에 전달 된 DB 연결을 닫습니까?" 그래서 : 그것을합니까? – Oliver

+0

내가 말할 수있는 한 대답은 '아니오'입니다. 그래서 위에서 설명한 맞춤형 제공 업체가 일부 경우에 더 안전하다고 생각하기 시작했습니다. –

0

그렇지 않습니다. NHibernate 세션은 자신이 생성 한 연결의 수명 만 관리합니다. 연결이 외부에서 제공되면 Dispose()에서도 세션에 의해 종료되지 않습니다.

관련 문제