2017-02-01 4 views
0

J'utilise NHibernate dans une application Windows Forms et j'ai besoin de changer la chaîne de connexion dans une classe de référentiel. Mais lorsque je tente d'obtenir la session en cours, je reçois cette erreur:Configuration de la session Nhibernate pour l'application Windows

No CurrentSessionContext configured 

Ma classe Repository est comme ci-dessous:

public class UserRepository : Repository<User>, IUserRepository 
    { 
     public UserRepository(ISessionFactory planningUow) : base(planningUow) 
     { 
      planningUow.GetCurrentSession().Connection.ConnectionString = "test"; 
     } 

     public IQueryable<User> GetByUserId(Guid id) 
     { 
      return Session.Query<User>().Where(bd => bd.UserId == id).AsQueryable(); 
     } 

     public IQueryable<User> GetAllUsers() 
     { 
      return Session.Query<User>().AsQueryable(); 
     } 

     public IQueryable<User> GetByUserPassword(string userName, string password) 
     { 
      return Session.Query<User>().Where(x => x.UserName == userName && x.Password == password).AsQueryable(); 

     } 
    } 

et mon code de configuration Fluent NHibernate est comme ci-dessous:

public ISessionFactory CreateSessionFactory() 
     { 
      try 
      { 
       return Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2008.ConnectionString(x => x.FromConnectionStringWithKey(ConnectionString))) 
       .Mappings(m => 
         m.FluentMappings 
          .AddFromAssemblyOf<UserMap>())    
       .ExposeConfiguration(config => { new SchemaUpdate(config).Execute(false, true); }) 
       .BuildSessionFactory(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      }  
     } 

comment puis-je obtenir la session en cours pour obtenir la chaîne de connexion?

Répondre

0

Je ne pense pas que vous serez en mesure de modifier les paramètres de connexion une fois que le SessionFactory est construit. Cependant, vous pouvez supply your own connection à Session. Comment vous serez capable de faire cela avec votre utilisation des sessions contextuelles n'est pas clair car vous n'avez pas inclus ce code.

En fonction du nombre de connexions différentes que vous prévoyez d'utiliser, une approche multiple SessionFactory pourrait être la meilleure.