Eu diria, porque toda essa informação, deveríamos ter um culpado. Há tantos problemas (bem problemas na verdade) com o mapeamento e código C# , que com certeza sabemos:
Caso este arquivo como está estaria disponível para a fábrica de sessões do NHibernate, obteríamos esta exceção
O que pode ser corrigido adicionando o atributo namespace ao mapeamento
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>
Uma vez que isso fosse corrigido, mais tarde receberíamos essa exceção
o que poderia ser corrigido tornando todo o material da Entidade virtual:
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; }
Então, com certeza, nós sabemos - a questão é
- configuração incorreta no
hibernate.cfg.xml
- configuração incorreta do
Mapping.hbm.xml
propriedades
Isso deve fazer parte do hibernate.cfg.xml :
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<mapping assembly="NhibernateORM"/>
o hibernate.cfg.xml deve ter propriedades:
- Criar ação ===conteúdo
- Copiar para o diretório de saída ===Copiar sempre
o Mapping.hbm.xml deve ter propriedades:
- Criar ação ===Recurso incorporado
- Copiar para o diretório de saída ===Não copiar