Nihbernate가 OpenSession
메서드에 대한 매개 변수로 제공된 db 연결을 닫는 지 궁금합니다.OpenSession 메서드에 매개 변수로 NHibernate 세션 닫기 db 연결을 제공합니까?
using(var session = sessionFactory.OpenSession(connection))
{
}
예 I 연결 세션 배치 원한다.
안부, 알렉세이 자카 로브
Nihbernate가 OpenSession
메서드에 대한 매개 변수로 제공된 db 연결을 닫는 지 궁금합니다.OpenSession 메서드에 매개 변수로 NHibernate 세션 닫기 db 연결을 제공합니까?
using(var session = sessionFactory.OpenSession(connection))
{
}
예 I 연결 세션 배치 원한다.
안부, 알렉세이 자카 로브
은 내가 매개 변수로 연결 문자열을 제공하지 않고 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;
}
}
내 문제를 해결했다.
그렇지 않습니다. NHibernate 세션은 자신이 생성 한 연결의 수명 만 관리합니다. 연결이 외부에서 제공되면 Dispose()
에서도 세션에 의해 종료되지 않습니다.
안녕 Alexey, 당신은 정말로 자신의 질문에 대답하지 않았다 :-) "NHibernate는 세션 생성자에 전달 된 DB 연결을 닫습니까?" 그래서 : 그것을합니까? – Oliver
내가 말할 수있는 한 대답은 '아니오'입니다. 그래서 위에서 설명한 맞춤형 제공 업체가 일부 경우에 더 안전하다고 생각하기 시작했습니다. –