2011-01-11 34 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的一个实例被创建并从移位数据中弹出,员工被加载,然后它被添加到集合中。

任何人都知道这是否可能,我将如何映射并查询它。

回答