2011-01-11 112 views
0

在此刻工作的遺留應用程序,我們正在用NHibernate取代數據訪問,因爲舊的數據訪問沒有做急切/延遲加載,系統的一部分正在做2000+以上的查詢建立關係...流利NHibernate地圖繼承類

一切都很好,除非我絕對不知道如何映射一個場景。

我們有一個「移位」和「MultiResourceShift」

public class Shift 
{ 
    public int Id { get; protected set; } 
    public string EmployeeName { get; set; } 
    public IEnumerable Breaks { get; set; } 
    ... 
}

在otherhand多的資源位移,是一個有效的Shift鍵,可以給它分配多個員工。

public MultiResourceShift : Shift 
{ 
    public IEnumerable Employees { get; set; } 
    public bool IsMultiResource { get; set; } 
}

數據庫結構被映射爲一對許多這樣的:

 
+--------------------+ 
| Shift   | 
+--------------------+ 
| ShiftId   | 
| EmployeeName  | 
| IsMultiResource | 
| ...    | 
+--------------------+ 
+--------------------+ 
| MultiResourceShift | 
+--------------------+ 
| MultiResourceId | 
| ShiftId   | 
| EmployeeId   | 
| ...    | 
+--------------------+ 

理想地,這需要查詢,其中結果返回位移,或MultiResourceShifts的集合。

目前,這是通過遍歷閱讀器實現的,如果它是一個Shift,它被映射並添加到集合中,如果它是一個多資源,MultiResourceShift的一個實例被創建並從移位數據中彈出,員工被加載,然後它被添加到集合中。

任何人都知道這是否可能,我將如何映射並查詢它。

回答