Я не знал об этой проблеме о сопоставлении иерархии с помощью NHibernate. Однако, возможно, вы уже знаете, если вы об этой проблеме, вот как это должно быть сделано:
<class name="ICategory" table="Categories">
<id name="ID" column="IdCategory">
<generator class="identity">
</id>
<property name="Name"/>
<component name="Parent" class="ICategory"> <!-- class attribute is normally optional -->
<!-- Here, I would have some test to do to determine whether we have to list the properties -->
<!-- I would say no and this would makes sense to me, but without having tested it, I can't confirm. -->
</component>
<union-subclass="Category">
...
</union-subclass>
</class>
Если вы Категория класс объекта не дает больше свойств, чем ваш интерфейс ICategory, вы можете положить все свойств внутри родительского элемента класса, тогда объявите только ваш следующий союз-подкласс объект внутри него.
Для получения дополнительной информации по этому вопросу вы можете обратиться к NHibernate Reference Documentation, Chapter 8 - Inheritence mapping. Что касается отображения компонентов, вы хотите проверить Chapter 7 - Component Mapping.
Что касается EF4, я не могу помочь, поскольку я никогда с ним не работал. Сожалею.
У вас возникли проблемы с отображением интерфейса (ICategory) в таблицу? –
Hey shimms - В основном я получаю следующую ошибку: «Ассоциация из таблицы. Категории относятся к неотображаемому классу:« Я не уверен, ответил ли я на ваш вопрос. Karan – kidoman
Просто нашел что-то, что может быть актуальным: http://stackoverflow.com/questions/849664/fluent-nhibernate-how-do-i-map-an-entity-with-a-property-whos-type- is-an-interf – kidoman