我有一个接口和一个实现此接口的类。
public interface IPhase {
string Description { get; set; }
int Id { get; }
string Phase { get; set; }
}
public class Phase : IPhase {
// Implementation here...
}
现在,使用NHibernate 2.1.2.GA,我希望使用table-per-class-hierarchy来映射接口及其实现者,事实上,我不需要一个鉴别器,因为这个实现者将是这个表中只保留了类。我现在还没有使用NHibernate大约一年半,我在这里遇到了一些内存空白......
我已经阅读了这个问题和相关的答案,除了我没有使用FNH NHibernate Mapping: Save hierarchy to single table without discriminator
我想知道使用discriminator
时subclass
属性是否必须?
我的XML映射在这个特定的上下文中应该是什么样的?
非常感谢你的帮助!
答案 0 :(得分:5)
当然NHibernate需要一个每个类层次表映射的鉴别器,在从数据库中获取一行时应该如何识别不同的子类呢?
如果只有一个接口实现,为什么要映射它?只需将该类映射为普通实体(无继承)。
编辑:忘记您可能在映射中引用了该接口。在这种情况下,你可以尝试一个table-per-concrete-class映射,用abstract="true"
标记基类(接口),如下所述:http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcrete