2

假设我有一个这样的实体页面

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 实体?

任何类型的映射都很好(流利的,通过代码,...)。

如果您需要更多信息,请询问。

4

2 回答 2

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");
    }
}
于 2013-09-16T09:53:23.733 回答
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;
    }
}
于 2013-09-16T09:52:53.987 回答