windows 应用程序的 Nhibernate 会话配置
Nhibernate Session configuration for windows application
我在 Windows Forms 应用程序中使用 NHibernate,我需要更改存储库 class 中的连接字符串。但是当我尝试获取当前会话时出现此错误:
No CurrentSessionContext configured
我的存储库class如下:
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;
}
}
如何让当前会话获取连接字符串?
我认为 SessionFactory
构建完成后您将无法更改连接设置。但是,您可以 supply your own connection 到 Session
。由于您没有包含该代码,因此您将如何使用上下文会话来执行此操作尚不清楚。
根据您计划使用多少个不同的连接,多个 SessionFactory
方法可能是最好的。
我在 Windows Forms 应用程序中使用 NHibernate,我需要更改存储库 class 中的连接字符串。但是当我尝试获取当前会话时出现此错误:
No CurrentSessionContext configured
我的存储库class如下:
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;
}
}
如何让当前会话获取连接字符串?
我认为 SessionFactory
构建完成后您将无法更改连接设置。但是,您可以 supply your own connection 到 Session
。由于您没有包含该代码,因此您将如何使用上下文会话来执行此操作尚不清楚。
根据您计划使用多少个不同的连接,多个 SessionFactory
方法可能是最好的。