NHibernate 复杂的一对一映射

发布于 2024-09-03 06:09:13 字数 184 浏览 5 评论 0原文

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

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

NHibernate 可以吗?

There is a table A containing common unversioned data for entities. There are also tables B,C,D with versioned data of particular entity type. All of these tables are referencing table A.

The task is to add a mapping of a property of entity's type, for example, stored in table B, which would reference table A, and specify a rule how entity should be fetch from table B based on identifier from table A. (For example, to fetch latest version of an entity).

It it possible with NHibernate?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷︶言冷语的世界 2024-09-10 06:09:13

Take a look at this post by Ayende. You can map this using table per hierarchy or table per sub class. If you choose the former you will have to add a discriminator column to table A.

本宫微胖 2024-09-10 06:09:13
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");
    }
}
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");
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文