Предположим, у вас есть следующие определения классов:
public class SomeEntity
{
public class Key
{
public virtual OtherEntity Other { get; set; }
public virtual int Index { get; set; }
public override bool Equals(object other)
{
// something here...
}
public override int GetHashCode()
{
// something here...
}
}
public virtual Key Id { get; set; }
}
public class OtherEntity
{
public virtual int Id { get; set; }
}
И тогда вы хотели бы иметь файл сопоставления, подобный приведенному ниже:
<class name="SomeEntity" table="SOME">
<composite-id name="Id" class="SomeEntity.Key">
<key-many-to-one name="Other" column="OTHER_ID" class="OtherEntity" />
<key-property name="Index" column="INDEX" type="int" />
</composite-id>
</class>
<class name="OtherEntity" table="OTHER">
<id name="Id" column="ID" type="int">
<generator class="identity" />
</id>
</class>
Попытка инициализировать NHibernate приводит к выдаче NHibernate.MappingException
, при этом сообщение "не удалось найти класс: SomeEntity.Key" . Скорее всего, проблема в атрибуте class="SomeEntity.Key"
. Мне не удалось найти правильный синтаксис для ссылки на вложенный класс.
Также я хотел бы получить подсказку, где еще я должен был искать ответ (например, я не смог найти ответ в книге «NHibernate в действии»). Какой ресурс для таких вопросов вы предпочитаете в NHibernate?