在此刻工作的遗留应用程序,我们正在用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的一个实例被创建并从移位数据中弹出,员工被加载,然后它被添加到集合中。
任何人都知道这是否可能,我将如何映射并查询它。