如何 NHibernate 将多个类映射到同一个表

Posted

技术标签:

【中文标题】如何 NHibernate 将多个类映射到同一个表【英文标题】:How to NHibernate Map Multiple Classes to the Same Table 【发布时间】:2012-05-25 15:25:09 【问题描述】:

是否可以将 2 个类映射到同一张表?

class Foo 
class Bar : Foo 
class Zap : Bar 

Foo 和 Bar 是 Fl​​uent Nhibernate 自动映射到一个会话工厂。

所有 3 个类都在不同的会话工厂中使用 Fluent 映射进行映射:

class FooMap :  Class<Foo> 

class BarMap :  Subclass<Bar> 

class ZapMap :  Subclass<Zap> 
    public ZapMap() 
          Table("Bar");
    

我希望 Zap 映射到 Bar 表而不是创建一个新表。这可能吗?

【问题讨论】:

这些有帮助吗? philliphaydon.com/2011/08/…philliphaydon.com/2011/08/… 【参考方案1】:

如果您将 BarMap 更改为:

class BarMap : Class<Bar>  

并且您的 Bar 表上有一个“类型”列(类型为 string 以区分 Bar 和 Zap),那么它应该可以工作

看一下页面底部附近的http://fluentnhibernate.wikia.com/wiki/Fluent_mapping关于子类(你想要每类层次结构的表)

【讨论】:

以上是关于如何 NHibernate 将多个类映射到同一个表的主要内容,如果未能解决你的问题,请参考以下文章

操作方法:从同一个表映射(NHibernate)具有不同业务逻辑的多个类?

NHibernate 如何将交叉引用表映射到包?

NHibernate 映射 - 带有被重用列的用户类型?

如何在多个实体到另一个实体之间创建 NHibernate 关系映射(即继承映射)

如何在 Fluent NHibernate ClassMap 类中指定表名?

Fluent NHibernate:如何将整个类映射为只读?