История:
У меня был класс User и класс Organization: User. Я не использовал сопоставления для этих классов, пусть FNH выполняет сопоставление автоматически. Затем я добавил
public class OrganizationMap : IAutoMappingOverride<Organization>
{
public void Override(AutoMap<Organization> mapping)
{
}
}
Обратите внимание, что нет переопределений. Поэтому я не ожидал каких-либо изменений в поведении FNH. Но я получил это (на самом деле во время экспорта схемы):
NHibernate.MappingException:
(XmlDocument) (2,4): проверка XML
ошибка: элемент 'класс' в
пространство имен 'urn: nhibernate-mapping-2.2'
имеет неполное содержание. Список
ожидаемые возможные элементы: 'мета,
выбрать, кэшировать, синхронизировать,
комментарий, туплизатор, идентификатор, составной идентификатор
в пространстве имен
'Урна: NHibernate-отображение-2,2'
.
Сгенерированный Orders.Core.Organization.hbm.xml был действительно пуст:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="">
<class name="Orders.Core.Organization, Orders.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Organizations" xmlns="urn:nhibernate-mapping-2.2" />
</hibernate-mapping>
Итак, после того, как я просмотрел User.hbm, у меня появилась идея - мне нужно переопределить Организацию в базовом классе следующим образом:
public class UserMap : IAutoMappingOverride<User>
{
public void Override(AutoMap<User> mapping)
{
mapping.JoinedSubClass<Organization>("ColumnId", m => {...}
);
}
}
Но я бы хотел сделать это в отдельном классе переопределения сопоставления для Organization ... в конце концов, каким будет сопоставление, если у меня будет 5 подклассов в одном методе переопределения.
Возможно ли это?