NHibernate - отображение общей сущности, которая реализует древовидную структуру - PullRequest
0 голосов
/ 16 февраля 2012

Я относительно новичок в использовании Nhibernate, но основные вещи уже работают.

Теперь мне нужно сопоставить универсальную сущность , которая реализует древовидную структуру .Отдельно каждый из них (только универсальный или только дерево) работает нормально.

Вот код модели:

public class Test<T>
{
    public virtual Int64 Id { get; set; }
    public string Name { get; set; }
    public IList<Test<T>> Children { get; set; }
}

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="PersistencyObjectModel" namespace="PersistencyObjectModel.Domain">
  <class name="Test`1[String]">
    <id name="Id">
      <generator class="guid"/>
    </id>
    <property name="Name" length="50" not-null="true" unique="true"/>

    <set name="Children" table="TEST_TEST_LINK" cascade="all-delete-orphan" >
      <key column="ParentId"/>
      <many-to-many column="ChildId" class="Test`1[String]"/>
    </set>

  </class>
</hibernate-mapping>

Когда я использую эту модель, я получаю следующую ошибку Nhibernate:

{"persistent class PersistencyObjectModel.Domain.Test`1[[PersistencyObjectModel.Domain.String, 
    PersistencyObjectModel]], PersistencyObjectModel not found"}

Что означает эта ошибка и как ее исправить?

1 Ответ

0 голосов
/ 16 февраля 2012

Обновление: попробуйте это

<hibernate-mapping namespace="PersistencyObjectModel.Domain" 
                   assembly="PersistencyObjectModel"
                   xmlns="urn:nhibernate-mapping-2.2">
  <class name="PersistencyObjectModel.Domain.Test`1[[System.String,
               mscorlib, Version=4.0.0.0, 
               Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
         table="TestOfString">
    <id name="Id">
      <generator class="guid.comb"/>
    </id>
    <property name="Name" length="50" not-null="true" unique="true"/>
    <set name="Children" table="TEST_TEST_LINK">
      <key column="ParentId" />
      <many-to-many column="ChildId"
                    class="PersistencyObjectModel.Domain.Test`1[[System.String, 
                           mscorlib, Version=4.0.0.0,
                           Culture=neutral, PublicKeyToken=b77a5c561934e089]]"/>
    </set>
  </class>
</hibernate-mapping>

Некоторые вещи на заметку:

  • Вы не можете использовать генератор guid с свойством long; измените это на Guid
  • Необходимо указать имя таблицы сущностей
  • Используйте полные имена.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...