У меня проблема с отображением отношения «многие к одному» из отображения абстрактного базового класса в конкретный объединенный подкласс. Пример:
public abstract class Entity
{
public virtual Guid ID {get; set;}
public virtual string Name {get;set;}
public virtual User OwnerUser {get; set;}
}
public class User : Entity
{
public virtual string UserName {get; set;}
}
Как вы можете видеть здесь, у меня есть базовый абстрактный класс для всех моих объектов базы данных. Я сопоставляю эти классы с классом Entity в качестве класса абстрактного сопоставления и с User в качестве подкласса union. При создании объекта конфигурации не выдается никаких ошибок, и схема экспортируется просто отлично. Тем не менее, поле для OwnerUser просто не будет отображаться в базе данных для всех конкретных классов. Вот пример того, как выглядит отображение
<class entity-name="Entity" name="Entity" abstract="true">
<id name="ID" type="guid">
<generator class="guid.comb"/>
</id>
<property name="Name" />
<many-to-one name="OwnerUser" column="ID" entity-name="User" />
</class>
<union-subclass name="User" entity-name="User" extends="Entity">
<property name="UserName" />
</union-subclass>
Я также использую экземпляр Oracle XE в качестве базы данных. Если этой информации недостаточно для правильного ответа на вопрос, дайте мне знать, и я добавлю, что могу.
В худшем случае я просто явно добавлю отношение «многие к одному» для всех конкретных объектов, но это не самое элегантное решение, и я думаю, что предложенное мной должно сработать. Я не смог найти каких-либо конкретных примеров этого на трубках, которые питают различные сети, и я не нашел ничего в документации, явно заявляющей, что это недопустимый вариант использования, хотя я мог что-то пропустить. Это не было бы в первый раз: - /
Любые ответы на этот вопрос с благодарностью. Спасибо за ваше время.