值“hibernate.current_session_context_class”根据其数据类型“字符串”无效

本文关键字:字符串 无效 数据类型 class hibernate current session context | 更新日期: 2023-09-27 18:33:29

我有一个使用Nhibernate的应用程序。这是我第一个使用它的应用程序,所以我是新手。我正在尝试测试我的第一个获取方法。

protected void Button1_Click(object sender, EventArgs e)
{
  IList<Person> persons =
    SessionManager
      .SessionFactory
      .GetCurrentSession()
      .CreateCriteria(typeof(Person))
      .List<Person>();
}

这是会话管理代码:

public static partial class SessionManager 
{
  private static readonly ISessionFactory _sessionFactory;
  static SessionManager()
  {
    Configuration cfg = new Configuration().Configure();
    _sessionFactory = 
      Fluently
        .Configure(cfg)
        .Mappings(m => m.FluentMappings.AddFromAssembly(typeof(SessionManager).Assembly))
        .BuildSessionFactory();
        //CurrentSessionContext.Bind(_sessionFactory.GetCurrentSession());
  }
  public static ISession OpenSession()
  {
    return _sessionFactory.OpenSession();
  }
  public static ISessionFactory SessionFactory
  {
    get { return _sessionFactory; }
  }
}

但是每次我运行该应用程序并单击 btn 时,它都会抛出一个带有内部异常 msg 的异常:

"'name' 属性无效 - 值 "hibernate.current_session_context_class"根据其无效 数据类型"字符串" - 枚举约束失败。

这是我的冬眠.cfg.xml

<?xml version="1.0" encoding="utf-16"?>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="hibernate.current_session_context_class">managed</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Server=localhost'MSSQLSERVERR2;Database=PersonSearch;Trusted_Connection=True</property>
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
      <property name="cache.use_minimal_puts">false</property>
      <property name="use_outer_join">false</property>
    </session-factory>
  </hibernate-configuration>

本来,我没有把

<property name="hibernate.current_session_context_class">managed</property>

但它给了我一个错误:

未配置当前会话上下文(设置属性 current_session_context_class(!

值“hibernate.current_session_context_class”根据其数据类型“字符串”无效

如果在 Web 应用程序中,请尝试以下操作:

<property name="current_session_context_class">managed_web</property>

如果在 winform 应用程序中,请尝试以下操作:

<property name="current_session_context_class">thread_static</property>