2010-05-28 2 views

Répondre

0

Je résolu mon problème avec 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; 


    } 
} 

personnalisé Dans ce cas, j'utiliser la méthode de OpenSession sans fournir la chaîne de connexion en tant que paramètre.

+0

Salut Alexey, vous n'avez pas vraiment répondu à votre propre question :-) "NHibernate ferme-t-il la connexion DB transmise au constructeur Session?" Alors: est-ce? – Oliver

+0

Pour autant que je sache, la réponse est non. C'est pourquoi je commence à penser que le fournisseur de services décrit ci-dessus pourrait être plus sûr dans certains cas. –

0

Ce n'est pas le cas. Une session NHibernate ne gère que la durée de vie de la connexion qu'elle crée; Si la connexion est fournie depuis l'extérieur, elle n'est jamais fermée par la session, même après Dispose().

Questions connexes