C# 递归关系的fluent Nhibernate

C# 递归关系的fluent Nhibernate,c#,fluent-nhibernate,C#,Fluent Nhibernate,我有一个代表部门的对象。部门可以包含多个员工和一个子部门。Employee可以为下属包含多个Employee。我如何用Fluent NHibernate表示这种关系。域类如下所示: public class Department : Entitybase { public int Id; public string DepartmentName; public List<Employee> Employees; public Department Su

我有一个代表部门的对象。部门可以包含多个员工和一个子部门。Employee可以为下属包含多个Employee。我如何用Fluent NHibernate表示这种关系。域类如下所示:

public class Department : Entitybase
{
    public int Id;
    public string DepartmentName;
    public List<Employee> Employees;
    public Department SubDepartment;

}

public class  Employee : EntityBase
{
    public int Id;
    public string Name;
    public List<Employee> Subordinates
}

如何为Select创建流畅的nhibernate映射并将数据插入表。

请查看Ayende关于高效选择树的帖子:

接下来是地图,我知道你想要它们

  • 部门地图:
为了映射部门的员工,你可以这样写

Map(d => d.Id);
Map(d => d.DepartmentName);

HasMany(d => d.Employees)
.KeyColumn("DepartmentId")
.Cascade.None();
然后,对于子部门属性,我不知道一个部门如何只有一个子部门。你想把它列为子部门的清单吗

References(d => d.Subdepartment)
.Column("SubDepartmentId")
.Cascade.All();
删除此部门时,最后一个级联将删除子部门

  • 雇员地图

    地图(e=>e.Id); Map(e=>e.Name); 拥有许多(e=>e.下属) .栏(“主管ID”) .Cascade.None()//如果这是可为空的,请查看其他类型的级联,并根据需要进行修改


最好看看您迄今为止提出的映射。你能把这些添加到问题中吗?谢谢你的回答,我会尝试。实际上,我想用2个类来管理所有的dropdownlist。我有DropdownType和DropdownList,但有些DropdownType与另一个DropdownType相关,例如Country->States->City。因此,department类指的是DropdownType,employee类指的是DropdownList。
References(d => d.Subdepartment)
.Column("SubDepartmentId")
.Cascade.All();