sql >> Base de Datos >  >> RDS >> Mysql

Excepción NHibernate.Mapping. Sin persistente para Namespace.className

Diría que, debido a toda esa información, deberíamos tener un culpable. Hay tantos problemas (bueno problemas de hecho) con el mapeo y código C# , que seguro sabemos:

En caso de que este archivo tal cual estaría disponible para la fábrica de sesiones de NHibernate, obtendríamos esta excepción

Lo que podría solucionarse agregando el atributo de espacio de nombres a la asignación namespace="NhibernateORM"

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

Una vez que eso se solucione, más tarde obtendríamos esta excepción

que podría solucionarse haciendo que todas las cosas de la Entidad sean virtuales:

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

Entonces, seguro, lo sabemos:el problema es

  • configuración incorrecta en hibernate.cfg.xml
  • Configuración incorrecta de Mapping.hbm.xml propiedades

Esto debería ser parte de hibernate.cfg.xml :

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

el hibernate.cfg.xml debe tener propiedades:

  • Crear acción ===Contenido
  • Copiar al directorio de salida ===Copiar siempre

el Mapeo.hbm.xml debe tener propiedades:

  • Crear acción ===Recurso incrustado
  • Copiar al directorio de salida ===No copiar