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

问题描述:

是否可以将2个类映射到同一个表?如何将NHibernate映射多个类到同一个表

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

Foo和Bar是流利的Nhibernate自动映射在一个会话工厂。

所有3类映射用流利的映射在不同的会话工厂:

class FooMap : Class<Foo> {} 

class BarMap : Subclass<Bar> {} 

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

我想删除到被映射到酒吧桌上,而不是创建一个新的。这可能吗?

+0

这些帮助吗? http://www.philliphaydon.com/2011/08/fluent-nhibernate-table-inheritance-discriminators/ http://www.philliphaydon.com/2011/08/fluent-nhibernate-table-inheritance-discriminators-part- 2 / – Phill

如果更改BarMap到:

class BarMap : Class<Bar> { } 

,你有你的吧台上的“类型”列(字符串类型为它酒吧的和ZAP的区分的),那么它应该工作

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