Когда я пытался выполнить операции CRUD над POCO для базы данных, я получил исключение: Исключение отображения NHibernate: Не сохраняется для: MyNamespace.Model.User.
Вот мой код:
namespace MyNamespace.Model
{
public interface IModel<TID>
{
TID ID { get; set; }
}
public class User : IModel<int>
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
}
и вот мое отображение
namespace MyNamespace.Model.Mapping
{
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("User");
Id(x => x.ID);
Map(x => x.Name)
.Length(255)
.Unique()
.Not.Nullable();
}
}
}
В моем файле конфигурации я добавил отображение сборки:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
...
<mapping assembly="MyNamespace" />
</session-factory>
</hibernate-configuration>
Я знаю, что такая проблема возникает при использовании файлов hbm, когда они не установлены как встроенные ресурсы. Но в моем случае я использую Fluent NHibernate, где такие файлы не используются. Я также читал здесь, что классы Mapping должны быть публичными - я сделал это, как вы можете видеть. Все мои свойства класса модели являются виртуальными (чтобы прокси могли творить чудеса). Я абсолютно не знаю, что мне здесь не хватает, и я был бы рад услышать любые предложения по этому вопросу.