我有一個映射從抽象基類映射到具體聯合子類的多對一關係的問題。例如:映射NHibernate從抽象基類到聯合子類的多對一關係
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-subclass。在創建配置對象時,不會引發任何錯誤,並且Schema導出正常。但是,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實例作爲數據庫後端。如果這些信息不足以正確回答問題,請告訴我,我會盡我所能。
最糟糕的情況我只是明確地在所有的具體對象上添加多對一的關係,但這不是最優雅的解決方案,我認爲我提出的應該工作。我一直沒有找到任何具體的例子來說明各種互聯網的管道,也沒有在文檔中發現任何明確指出這是無效的用例,儘管我可能錯過了某些東西。這不會是第一次: -/
這個問題的任何答案,不勝感激。感謝您的時間。