Бих казал, защото цялата тази информация трябва да имаме виновник. Има толкова много проблеми ( добре, проблеми всъщност) скартографирането и код на C# , което със сигурност знаем:
В случай, че този файл какъвто е ще бъде достъпна за фабриката за сесии на NHibernate, ще получим това изключение
Което може да бъде поправено чрез добавяне на атрибут namespace към съпоставянето 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>
След като това бъде коригирано, по-късно ще получим това изключение
което може да бъде поправено, като направим всички неща на Entity виртуални:
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; }
Така че със сигурност знаем - проблемът е
- грешна конфигурация в
hibernate.cfg.xml
- грешна конфигурация на
Mapping.hbm.xml
свойства
Това трябва да е част от 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 трябва да има свойства:
- Създаване на действие ===Съдържание
- Копиране в изходна директория ===Копиране винаги
Mapping.hbm.xml трябва да има свойства:
- Действие за изграждане ===Вграден ресурс
- Копиране в изходна директория ===Не копирайте