Powiedziałbym, że ponieważ wszystkie te informacje, powinniśmy mieć winowajcę. Jest tak wiele problemów (no, problemy w rzeczywistości) z mapowaniem i kod C# , że na pewno wiemy:
W przypadku, gdy ten plik tak jak jest byłby dostępny dla fabryki sesji NHibernate, otrzymalibyśmy ten wyjątek
Co można naprawić, dodając atrybut namespace do mapowania 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>
Gdy to zostanie naprawione, później otrzymamy ten wyjątek
co można naprawić, czyniąc wszystkie rzeczy Entity wirtualnymi:
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; }
Więc na pewno wiemy - problem jest
- niewłaściwa konfiguracja w
hibernate.cfg.xml
- niewłaściwa konfiguracja pliku
Mapping.hbm.xml
właściwości
Powinno to być częścią pliku hibernate.cfg.xml :
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<mapping assembly="NhibernateORM"/>
plik hibernate.cfg.xml musi mieć właściwości:
- Akcja budowania ===Treść
- Kopiuj do katalogu wyjściowego ===Kopiuj zawsze
Mapping.hbm.xml musi mieć właściwości:
- Akcja budowania ===Osadzony zasób
- Kopiuj do katalogu wyjściowego ===Nie kopiuj