windows应用程序的Nhibernate会话配置

windows应用程序的Nhibernate会话配置,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在Windows窗体应用程序中使用NHibernate,需要更改存储库类中的连接字符串。但是,当我尝试获取当前会话时,会出现以下错误: No CurrentSessionContext configured 我的存储库类如下所示: public class UserRepository : Repository<User>, IUserRepository { public UserRepository(ISessionFactory planningU

我正在Windows窗体应用程序中使用NHibernate,需要更改存储库类中的连接字符串。但是,当我尝试获取当前会话时,会出现以下错误:

No CurrentSessionContext configured
我的存储库类如下所示:

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();

        }
    }
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;
            }       
        }
public类UserRepository:Repository,IUserRepository
{
公共用户存储库(ISessionFactory planningUow):基础(planningUow)
{
planningUow.GetCurrentSession().Connection.ConnectionString=“测试”;
}
公共IQueryable GetByUserId(Guid id)
{
返回Session.Query().Where(bd=>bd.UserId==id).AsQueryable();
}
公共IQueryable GetAllUsers()
{
返回Session.Query().AsQueryable();
}
公共IQueryable GetByUserPassword(字符串用户名、字符串密码)
{
返回Session.Query().Where(x=>x.UserName==UserName&&x.Password==Password).AsQueryable();
}
}
我的Fluent Nhibernate配置代码如下:

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();

        }
    }
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;
            }       
        }
public ISessionFactory CreateSessionFactory()
{
尝试
{
流畅地返回。Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(x=>x.fromConnectionString WithKey(ConnectionString)))
.Mappings(m=>
m、 FluentMappings
.AddFromAssemblyOf())
.ExposeConfiguration(config=>{newschemaupdate(config).Execute(false,true);})
.BuildSessionFactory();
}
捕获(例外情况除外)
{
掷骰子;
}       
}

如何获取当前会话以获取连接字符串?

我认为一旦构建了
会话工厂
,您将无法更改连接设置。但是,您可以访问
会话
。您将如何使用上下文会话来实现这一点还不清楚,因为您还没有包含该代码

根据您计划使用多少不同的连接,多个
SessionFactory
方法可能是最好的