Mysql
 sql >> Datenbank >  >> RDS >> Mysql

NHibernate.Mapping-Ausnahme. Kein Persister für Namespace.className

Ich würde sagen, wegen all dieser Informationen sollten wir einen Schuldigen haben. Es gibt so viele Probleme (na ja Probleme tatsächlich) mit der Zuordnung und C#-Code , die wir sicher wissen:

Falls diese Datei wie sie ist für die NHibernate-Session-Factory verfügbar wäre, würden wir diese Ausnahme erhalten

Dies könnte durch Hinzufügen des Namespace-Attributs zur Zuordnung namespace="NhibernateORM" behoben werden

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
  assembly="NhibernateORM"
  namespace="NhibernateORM"
  auto-import="true">
  <class name="Layout" table="mytable">
    <id name="Id" column="ID" type="int" generator="assigned" />
    <property name="Name"        column="name"        type="String"/>
    <property name="xCoordinate" column="xCoordinate" type="double" />
    <property name="yCoordinate" column="yCoordinate" type="double" />
  </class>
</hibernate-mapping>

Sobald dies behoben wäre, würden wir später diese Ausnahme erhalten

was behoben werden könnte, indem man das ganze Entity-Zeug virtuell macht:

namespace NhibernateORM
{
    public class Layout
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual double xCoordinate { get; set; }
        public virtual double yCoordinate { get; set; }

Wir wissen es also mit Sicherheit – das Problem ist

  • falsche Konfiguration in der hibernate.cfg.xml
  • falsche Konfiguration der Mapping.hbm.xml Eigenschaften

Dies sollte Teil der hibernate.cfg.xml sein :

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
      ...
      <mapping assembly="NhibernateORM"/>

die hibernate.cfg.xml muss Eigenschaften haben:

  • Aktion erstellen ===Inhalt
  • In Ausgabeverzeichnis kopieren ===Immer kopieren

die Mapping.hbm.xml muss Eigenschaften haben:

  • Build-Aktion ===Eingebettete Ressource
  • In Ausgabeverzeichnis kopieren ===Nicht kopieren