NHibernate复杂的一对一映射

时间:2010-05-31 10:50:24

标签: nhibernate mapping one-to-one

有一个表A包含实体的常见无版数据。还有表B,C,D具有特定实体类型的版本化数据。所有这些表都引用了表A.

任务是添加实体类型属性的映射,例如,存储在表B中,它将引用表A,并指定一个规则如何根据表A中的标识符从表B中获取实体。 (例如,要获取实体的最新版本)。

NHibernate可以吗?

2 个答案:

答案 0 :(得分:0)

看看艾恩德的this帖子。您可以使用每个子类的表或每个子类的表来映射它。如果选择前者,则必须在表A中添加一个鉴别器列。

答案 1 :(得分:0)

class TableA
{
    public virtual int Id { get; set; }

    internal virtual IList<TableB> Bs { get; set; }
    public virtual TableB LatestB { get { return Bs[0]; } set { Bs.Insert(0, value); } }
}

class TableAMap : ClassMap<TableA>
{
    public TableAMap()
    {
        HasMany(x => x.Bs)
            .KeyColumn("a_id")
            .OrderBy("Version desc");
    }
}