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

时间:2012-05-25 15:25:10

标签: nhibernate inheritance fluent-nhibernate nhibernate-mapping

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

class Foo {}
class Bar : Foo {}
class Zap : Bar {}

Foo和Bar在一个会话工厂中自动映射Nhibernate。

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

class FooMap :  Class<Foo> {}

class BarMap :  Subclass<Bar> {}

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

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

1 个答案:

答案 0 :(得分:1)

如果您将BarMap更改为:

class BarMap : Class<Bar> { }

你的Bar表上有一个“type”列(类型字符串,用于区分Bar和Zap),然后它应该可以工作

查看页面底部附近有关子类的http://fluentnhibernate.wikia.com/wiki/Fluent_mapping(您希望每个类的层次结构)