假设我有一个像这样的实体页面
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实体?
任何类型的映射都很好(流畅,代码,......)。
如果您需要更多信息,请询问。
答案 0 :(得分:2)
你可以让他们自我引用..有点像这样:
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");
}
}
答案 1 :(得分:0)
我在 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;
}
}