类没有持久性错误

本文关键字:错误 持久性 | 更新日期: 2023-09-27 18:21:15

当我运行应用程序时,我得到"No persister for Test.Student"错误我是Nhibernate映射的新手,我无法理解
我该如何解决??plz帮助

NHibernate配置部分

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <configSections>
  <section name="hibernate-configuration"
    type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
  <property name="connection.provider">
    NHibernate.Connection.DriverConnectionProvider
  </property>
  <property name="connection.driver_class">
    NHibernate.Driver.SqlClientDriver
  </property>
  <property name="connection.connection_string">
    Server=(local);database=Student;Integrated Security=SSPI;
  </property>
  <property name="dialect">
    NHibernate.Dialect.MsSql2005Dialect
  </property>
  <!--<property name="proxyfactory.factory_class">
    NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernates
  </property>-->
  <property name="show_sql">
    false
  </property>
</session-factory>

主程序

程序.cs

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using NHibernate;
  using NHibernate.Cfg;
 namespace Test
  {
   class Program
    {
      static void Main(string[] args)
       {           
        ISessionFactory factor = new Configuration().Configure().BuildSessionFactory();
        if(factor!=null){
            Console.WriteLine("Configured");
        }
        else{
            Console.WriteLine("Not Configured");
        }
        Student std = new Student { Fname = "James", Lname = "Bond", Address = "32 Baker Street", Institution = "MIT" };
        using (ISession session = factor.OpenSession()) 
        {
            using (ITransaction transaction= session.BeginTransaction())
            {
                try 
                { 
                session.Save(std);
                transaction.Commit();
                session.Close();
                }
                catch(Exception e)
                {
                    Console.WriteLine("ERROR :" + e);
                }
            }           
        }               
    }
    //protected ISessionFactory factory;

    protected void execute_query()
    {
    }
}

}

映射部分

Student.hbm.xml

  <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
      <class name="Test.Student" table="Info" lazy="true">
     <id name="Id" type="int" column="Id">
       <generator class="native" />
    </id>
       <property name="Fname" column ="Fname"/>
<property name="Lname" column="Lname"/>
<property name="Address" column="Address"/>
<property name="Institution" column="Institution"/>
<!-- We don't have to specify a column name if its the same 
     as the variable name -->

类没有持久性错误

您需要在app.config文件中使用add mapping assembly name,如下所述。

   <property name="show_sql">false</property>
   <mapping assembly="Test"/>  <!-- Here -->
</session-factory>

如果没有,请确保将XML文件标记为Embedded Resource