了解 nhibernate 映射中的递归关系
本文关键字:递归 关系 nhibernate 映射 了解 | 更新日期: 2023-09-27 18:31:23
假设我有一个这样的实体页面
public class Page
{
public int Id {get; set;}
public string Title {get; set;}
public string Body {get; set;}
... to do
}
现在我想添加功能,即一个Page
可以有一个或多个Page
或一个或多个页面可以属于一个父Page
。
您将如何做到这一点,以及如何根据此要求映射(使用 nhibernate)此页面实体?
任何类型的映射都可以(流畅,通过代码,...
如果您需要更多信息,请询问。
你可以让他们自我引用......有点像这样:
Page
----
Id INT PRIMARY KEY IDENTITY
Title VARCHAR(50)
Body VARCHAR(500)
ParentId INT
然后,在Fluent中,你会得到这样的东西:
public class Page {
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string Body { get; set; }
public virtual Page Parent { get; set; }
public virtual IList<Page> Children { get; set; }
}
public class PageClassMap : ClassMap<Page> {
public PageClassMap() {
Table("Page");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Title);
Map(x => x.Body);
References(x => x.Parent);
HasMany(x => x.Children).KeyColumn("ParentId");
}
}
我将其与FluentNhibernate一起使用
References(x => x.ParentCategory).Column("ParentCategoryId").Cascade.SaveUpdate();
HasMany<Category>(x => x.ChildCategories).KeyColumn("ParentCategoryId").Cascade.SaveUpdate();
我有一个班级Category
孩子和一个家长。
public class Category : Entity<long>
{
public virtual IList<Category> ChildCategories
{
get;
set;
}
public virtual Category ParentCategory
{
get;
set;
}
}