我有以下類別:
NHibernate的一個一對多的收藏 - 僅檢索超
class Person
{
public string Name { get; set; }
}
class Employee : Person
{
public int Salary { get; set; }
}
class Company
{
public IList<Person> PeopleWhoAreNotEmployees { get; set; }
}
人員和員工使用表每類層次結構戰略進行映射。
當我檢索PeopleWhoAreNotEmployees集合時,我只希望它包含Person和Not Employees的元素。
我怎樣才能(流利地)配置集合來只檢索超類的元素?
我認爲這與多態屬性有關,但我無法弄清楚如何做到這一點。
感謝,
的Jhonny
編輯:
在與傑米的討論,我覺得我需要澄清的是,這裏的情況是不是真的人與員工,而更像是員工和HistoricalEmployee。
含義 - 當員工「死亡」時,他們並沒有被真正刪除,
但他們成爲了HistoricalEmployee(還有幾個屬性,如終止日期等)。
顯然,隨着時間的推移,HistoricalEmployees的數量將超出員工數量的大小,
,因此當我僅需要當前員工時,我無法獲取所有HistoricalEmployees。
對不起原始問題的模糊不清...
J
P.S.
我沒有改變原來的問題,因爲它會使答案不相關。
這個問題的新版本是可用的here
感謝,看起來問題很reasonable.couple:1(nHiberntae結點問題)如何將我的映射看起來像這個?我會映射私人領域嗎? 2.在哪裏(..)顧問過濾將在數據庫級發生,還是將所有現有的People對象加載,然後在應用程序級別過濾? – 2010-12-19 08:48:33
感謝編輯,傑米。不幸的是,這個解決方案對我來說是不可接受的,因爲在我的情況下,員工數量比人員多得多,所以我無法負擔將所有員工加載到應用程序級別並在那裏過濾;有什麼方法可以確保在數據庫級別進行過濾嗎? – 2010-12-21 07:14:12
你是否描述過性能?加載的記錄的典型數量是多少?訪問PeopleWhoAreNotEmployees集合而不訪問同一會話中的Employees集合是否正常? – 2010-12-21 19:36:41