我有一個與NHibernate一起使用的域模型的場景,它看起來像下面那樣。如何實現nhibernate中的導航屬性
public class BaseClass
{
public virtual int Id { get; set; }
public virtual string SomeProperty { get; set; }
}
public class FirstClass : BaseClass
{
public virtual IList<AnotherClass> AnotherClassList { get; set; }
}
public class SecondClass : BaseClass
{
public virtual AnotherClass AnotherClass { get; set; }
}
public class AnotherClass
{
public virtual int Id { get; set; }
public virtual BaseClass MyNavigationalProperty { get; set; }
}
它看起來不錯,但它不工作,因爲我期待它會這樣做。這是我的場景;
由於我的第一步我保存我的FirstClass與列表中的一個或多個AnotherClass,它的工作完美。我可以用列表中的相關AnotherClasses檢索我的FirstClass。
在我的第二步我分別保存一個新的AnotherClass並將MyNavigationalProperty從我的第一步設置爲我的FirstClass。它看起來不錯,但...
在我的最後一步我檢索我的FirstClass,我期待我的AnotherClassList包含我的第二步中的AnotherClass。但是我從第一步纔拿到原來的AnotherClasses。
展望數據庫中,我可以看到記錄從我的第二個步驟,但也有在表AnotherClass,BaseClass_Id和FirstClass_Id兩個獨立的FKS,並FirstClass_Id爲NULL,所以我沒有得到我的最後一步,這個紀錄。
這是錯誤的方式來實現導航屬性?而且,如果是這樣,我該如何正確地做到這一點?或者...簡單地說,有沒有更好的方法來做到這一點?
編輯
從我得到了另一種思想Thilak的映射的問題,原來的域模型沒有利用裏繼承的,那就是我的實現。這是否有必要創建我自己的映射?這是否意味着我必須完全放棄自動映射?
你能發佈你的實體映射嗎? –
nhibernate的實現作爲框架的一部分被繼承,並且看着那個代碼,我注意到它使用自動映射功能來實現。所以我沒有任何映射可供分享。 – Per
「我注意到它是使用自動映射功能實現的」<---使用FluentNhibernate? –