2017-08-27 4 views
1

Ich bin komplett neu in NHibernate. Ich habe viele Fragen mit demselben Titel gesehen, aber ich kann den genauen Fehler nicht finden. Ich verwende NHibernate mit SQL Server 2012.Das Mapping-Dokument konnte nicht kompiliert werden: NHibernate

Mein hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<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="dialect">NHibernate.Dialect.MsSql2012Dialect</property> 
     <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=cafePOSdb;Integrated Security=True;</property> 
     <property name="show_sql">true</property> 
     <mapping assembly="CafePOS" /> 
    </session-factory> 
</hibernate-configuration> 

Mein Mapping-Modell:

using System; 
using System.Text; 
using System.Collections.Generic; 

namespace CafePOS 
{ 
    public class CafeTableGroup 
    { 
     public CafeTableGroup() { } 
     public decimal cafe_table_group_id { get; set; } 
     public string cafe_table_group_name { get; set; } 
     public string remarks { get; set; } 
     public bool? is_active { get; set; } 
     public int? group_position { get; set; } 
     public string color { get; set; } 
    } 
} 

Meine hbm.xml Datei:

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping assembly="CafePOS" namespace="CafePOS" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="cafe_table_group" table="cafe_table_group" lazy="true" > 
    <id name="cafe_table_group_id" column="cafe_table_group_id"> 
     <generator class="identity" /> 
    </id> 
    <property name="cafe_table_group_name"> 
     <column name="cafe_table_group_name" sql-type="nvarchar" not-null="false" /> 
    </property> 
    <property name="remarks"> 
     <column name="remarks" sql-type="varchar" not-null="false" /> 
    </property> 
    <property name="is_active"> 
     <column name="is_active" sql-type="bit" not-null="false" /> 
    </property> 
    <property name="group_position"> 
     <column name="group_position" sql-type="int" not-null="false" /> 
    </property> 
    <property name="color"> 
     <column name="color" sql-type="nvarchar" not-null="false" /> 
    </property> 
    <bag name="cafe_table"> 
     <key column="cafe_table_group_id" /> 
     <one-to-many class="cafe_table" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

Meine Session Klasse:

namespace CafePOS 
{ 
    public sealed class SessionFactory 
    { 
     private static volatile ISessionFactory iSessionFactory; 
     private static object syncRoot = new Object(); 
     public static ISession OpenSession 
     { 
      get 
      { 
       if (iSessionFactory == null) 
       { 
        lock (syncRoot) 
        { 
         if (iSessionFactory == null) 
         { 
          Configuration configuration = new Configuration(); 
         Assembly assembly = Assembly.GetCallingAssembly(); 
          configuration.AddAssembly(assembly); 
          iSessionFactory = configuration.BuildSessionFactory(); 
         } 
        } 
       } 
       return iSessionFactory.OpenSession(); 
      } 
     } 
    } 
} 

Dies ist die Funktion, die ich zu implementieren versucht:

public static string AddNewTableGroup(CafeTableGroup group) 
{ 
    using (ISession session = SessionFactory.OpenSession) 
    { 
     using (ITransaction transaction = session.BeginTransaction()) 
     { 
      try 
      { 
       session.Save(group); 
       transaction.Commit(); 
       return "1"; 
      } 
      catch (Exception ex) 
      { 
       transaction.Rollback(); 
       session.Close(); 
       throw ex.InnerException; 
      } 
     } 
    } 
} 

ich auf der Linie

configuration.AddAssembly(assembly); 

zeigt den Fehler im Titel erhalten Fehler:

konnte nicht Kompilieren Sie das Zuordnungsdokument: NHibernate

Inner Ausnahmemeldung:

kann den Dialekt in der Konfiguration

Vielen Dank im Voraus nicht finden.

Antwort

1

Ihre Klassennamen nicht cafe_table_group, aber CafeTableGroup.

können Sie versuchen, indem Sie Ihre hbm.xml zu

<class name="CafeTableGroup" table="cafe_table_group" lazy="true"> 
      ************** 
0

Sie sollten die Datei hibernate.cfg.xml im Stammordner haben.

Beispiel Inhalt der Datei ist:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="dialect">Netsis.Framework.Persister.Hibernate.Dialect.NMsSql2008Dialect, Netsis.Framework.Persister</property> 
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
     <property name="connection.connection_string">Data Source=localhost;Initial Catalog=CRM;Persist Security Info=True;User ID=user;Password=pass</property> 
     <property name="proxyfactory.factory_class">Netsis.Framework.Persister.Hibernate.Proxy.PropertyReaderProxyFactoryFactory,Netsis.Framework.Persister</property> 
     <property name="show_sql">True</property> 
     <property name="format_sql">True</property> 
     <property name="adonet.batch_size">30</property> 
    </session-factory> 
</hibernate-configuration> 
+0

sir Ändern ich Visual Studio 2015 und hibernate.cfg.xml bin mit in der gleichen Position wie App.Config ist. –

+0

Ok - konnte Ihre Projektdateien nicht sehen, also schlug ich vor. Ich habe einen anderen gefunden. Eine andere Antwort schreiben. Schätzen Sie, wenn Sie bestätigen können, ob es funktioniert. – HGMamaci

+0

Sorry zu sagen, Sir, aber das hat nicht funktioniert.Ich bin darin stecken für ein paar Stunden.Bitte helfen Sie mir, wenn Sie können –

Verwandte Themen