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