在我的Nhibernate测试项目中没有当前会话上下文设置错误
本文关键字:会话 上下文 错误 设置 Nhibernate 我的 测试 项目 | 更新日期: 2023-09-27 18:09:47
我得到错误:
No CurrentSessionContext configured (set the property current_session_context_class).
我不知道该放什么,我有这个:
public class NhDbHelper
{
public NhDbHelper()
{
CreateSessionFactory();
}
private ISessionFactory _sessionFactory;
public ISessionFactory SessionFactory
{
get { return _sessionFactory; }
}
private void CreateSessionFactory()
{
_sessionFactory = Fluently
.Configure()
.Database((MsSqlConfiguration.MsSql2008 //
.ConnectionString(@"Server=.'SQLExpress;Database=abc;Uid=sa;Pwd=123;")
.ShowSql()))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
.BuildSessionFactory();
}
}
然后在我的存储库中,我只是在帮助器中使用SessionFactory属性。
在"流利"中,在". mappings(----)语句之前,您需要指定CurrentSessionContext。要做到这一点,假设您在Web上下文中使用它,您将在"。"映射"行如下所示。(我还修改了检索连接字符串的值,感谢Fluent:
private void CreateSessionFactory()
{
_sessionFactory = Fluently
.Configure()
.Database((MsSqlConfiguration.MsSql2008 //
.ConnectionString(c=>c.FromConnectionStringWithKey("abc"))
.ShowSql()))
.CurrentSessionContext("web")
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
.BuildSessionFactory();
}
我猜你是得到这个属性,当你试图使用sessionFactory.GetCurrentSesssion()
_config.ExposeConfiguration(cfg => cfg.Properties.Add("current_session_context_class", "thread"));
我也建议你使用sessionFactory.OpenSession()
对于使用web会话上下文:.CurrentSessionContext("web")
的人,会话存储在HttpContext中。单元测试中不存在的项。
.CurrentSessionContext("thread_static")
可以在单元测试中使用。