Řekl bych, že kvůli všem těm informacím bychom měli mít viníka. Je tu tolik problémů (tedy problémů ve skutečnosti) pomocí mapování a kód C# , které určitě víme:
V případě, že tento soubor tak jak je bude k dispozici NHibernate session factory, dostaneme tuto výjimku
Což by se dalo opravit přidáním atributu jmenného prostoru do mapová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>
Jakmile to bude opraveno, později dostaneme tuto výjimku
což by se dalo opravit tím, že by se všechny věci Entity staly virtuálními:
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; }
Takže určitě víme – problém je
- nesprávná konfigurace v souboru
hibernate.cfg.xml
- nesprávná konfigurace
Mapping.hbm.xml
vlastnosti
Toto by mělo být součástí hibernate.cfg.xml :
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<mapping assembly="NhibernateORM"/>
hibernate.cfg.xml musí mít vlastnosti:
- Akce sestavení ===Obsah
- Kopírovat do výstupního adresáře ===Kopírovat vždy
Mapping.hbm.xml musí mít vlastnosti:
- Vytvořit akci ===Vložený zdroj
- Kopírovat do výstupního adresáře ===Nekopírovat