在我的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属性。

在我的Nhibernate测试项目中没有当前会话上下文设置错误

在"流利"中,在". 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")可以在单元测试中使用。