假设我有一个像这样的实体页面
public class Page
{
public int Id {get; set;}
public string Title {get; set;}
public string Body {get; set;}
... to do
}
现在我想添加一个功能,一个Page
可以拥有一个或多个Page
或者一个或多个页面可以属于一个父Page
.
您将如何做到这一点以及如何根据此要求映射(使用 nhibernate)此页面实体?
任何类型的映射都可以(流畅、通过代码......)。
如果您需要更多信息,请询问。
最佳答案
你可以让它们 self 引用..有点像这样:
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");
}
}
关于c# - 理解nhibernate映射中的递归关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18823568/