【问题标题】:Same entity relationship using FluentNHibernate使用 FluentNHibernate 的相同实体关系
【发布时间】:2013-01-22 02:16:32
【问题描述】:
我正在尝试使用 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; }
}
【问题讨论】:
标签:
nhibernate
asp.net-mvc-4
fluent-nhibernate
fluent-nhibernate-mapping
【解决方案1】:
映射可能是这样的
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()
}
}
注意:因为 Menu 实例可以有 parent,它也可以有 children。我使用子集合扩展了映射,应该像这样声明:
public class Menu
{
...
public virtual Menu ParentMenu { get; set; }
public virtual IList<Menu> ChildMenus { get; set; }
}