使用FluentNHibernate的相同实体关系

时间:2013-01-22 02:16:33

标签: nhibernate asp.net-mvc-4 fluent-nhibernate fluent-nhibernate-mapping

我正在尝试使用FluentNHibernate创建与同一实体的关系,但不知道如何。有人成功了吗?你能救我吗?

这是我的实体类:

public class Menu
{
    public virtual Guid MenuId { get; set; }
    public virtual string Name { get; set; }
    public virtual string Description { get; set; }
    public virtual string Controller { get; set; }
    public virtual int Order { get; set; }
    public virtual Menu ParentMenu { get; set; }
}

1 个答案:

答案 0 :(得分:3)

映射可能就像这样

public class MenuMap : ClassMap<Menu>
{
  public MenuMap()
  {
      Table("MenuTable");
      Id(x => x.MenuId)
      ...

      // parent
      References(x => x.ParentMenu).Column("ParentId");

      // children, see note below
      HasMany(x => x.ChildMenus)
      .Inverse()
      .KeyColumn("ParentId")
      .Cascade.AllDeleteOrphan()
  }
}

注意:由于菜单实例可以包含,因此它也可以包含。我使用子集合扩展了映射,应该像这样声明:

public class Menu
{
    ...
    public virtual Menu ParentMenu { get; set; }
    public virtual IList<Menu> ChildMenus { get; set; }
}