类没有持久性错误
本文关键字:错误 持久性 | 更新日期: 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
。