c# - 理解nhibernate映射中的递归关系

标签 c# nhibernate domain-driven-design

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

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/

相关文章:

带有常量的 C# 泛型

json - SQL 中的领域事件存储...使用 JSON 序列化?

domain-driven-design - DDD : Who is responsible for the creation of value object and entity?

c# - 重新排序列表中项目的正确方法(nhibernate)

nhibernate - 如何从 NHibernate ISession.SaveOrUpdate 返回 id

nhibernate - SQLite 与 NHibernate 结合是否支持参照完整性/外键?

php - 领域驱动设计 : Handling complex entities with many states and relations (Real Estate)

c# - Visual Studio C#-设置和 StyleCop(MS 源代码分析)

c# - 将上下文菜单项添加到 Windows 资源管理器

c# - 使用异步/等待 : await returns too early