1

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

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
}

我的数据库表看起来像:

Department Table
   Id: int
   SubDepartmentId : int // a sub department id
   DepartmentName : string


Employee Table
    Id : int
    SuperviserId : int // A Superviser Id
    Name : string
    DepartmentId : int // a department id that contain this employee.

如何为 Select 和 Insert a Data 创建流利的 nhibernate 映射到表。

4

1 回答 1

0

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

http://ayende.com/blog/4151/nhibernate-tips-tricks-efficiently-selecting-a-tree

接下来是据我所知你想要的地图

  • 部门地图:

为了映射部门中的员工,您可以编写类似这样的内容。

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

HasMany(d => d.Employees)
.KeyColumn("DepartmentId")
.Cascade.None();

然后,对于子部门属性,我不完全了解一个部门如何只有一个子部门。您是否希望将其作为子部门列表?

References(d => d.Subdepartment)
.Column("SubDepartmentId")
.Cascade.All();

删除此部门时,最后一个 Cascade 会删除子部门

  • 员工地图

    地图(e => e.Id);地图(e => e.Name);HasMany(e => e.Subordinates) .Column("SuperviserId") .Cascade.None(); //如果这是可为空的,请查看其他类型的级联并根据需要进行修改。

于 2013-01-10T14:24:21.320 回答