Windows应用程序的Nhibernate Session配置

时间:2017-02-01 08:14:23

标签: nhibernate fluent-nhibernate

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

No CurrentSessionContext configured

My Repository类如下:

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

        }
    }

我的Fluent Nhibernate配置代码如下:

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;
            }       
        }

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

1 个答案:

答案 0 :(得分:0)

构建SessionFactory后,我认为您无法更改连接设置。但是,您可以supply your own connectionSession。如何使用上下文会话来完成此操作并不清楚,因为您没有包含该代码。

根据您计划使用的不同连接数量,多种SessionFactory方法可能最佳。