2013-07-07 2 views
0

Когда я запускаю приложение, я получаю сообщение «Нет persister для Test.Student» Ошибка Я новичок в Nhibernate Mapping, я не могу понять это
Как я могу решить ?? плз помочьНет persister для класса Ошибка

конфигурации 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> 

Основная программа

Program.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() 
    { 

    } 
} 

}

Mapping часть

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 --> 

+1

Вы установили действие по созданию файла XML в «Embedded Resource»? –

+0

да я сделал, но это не имеет никакого значения. – Taskin

ответ

1

Вы должны add mapping assembly name в файле app.config, как описано here.

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

Кроме того, убедитесь, чтобы пометить файл XML, как Embedded Resource, если нет.

+1

спасибо :), что действительно помогает – Taskin

Смежные вопросы