使用NHibernate而不使用鉴别​​器来保持每个类层次结构的一个表?

Wil*_*ler 0 nhibernate interface nhibernate-mapping table-per-hierarchy discriminator

我有一个接口和一个实现此接口的类.

public interface IPhase {
    string Description { get; set; }
    int Id { get; }
    string Phase { get; set; }
}

public class Phase : IPhase {
    // Implementation here...
}
Run Code Online (Sandbox Code Playgroud)

现在,使用NHibernate 2.1.2.GA,我希望使用table-per-class-hierarchy来映射接口及其实现者,实际上,我不需要一个鉴别器,因为这个实现者将是唯一的类持久化在这张表中.我现在还没有使用NHibernate大约一年半,我在这里遇到了一些内存空白......

我已经阅读了这个问题和相关的答案,除了我没有使用FNH.
NHibernate映射:将层次结构保存到单个表而不带鉴别器

  1. 我想知道这个discriminator属性在使用时是否是强制性的subclass

  2. 在这个特定的上下文中,我的XML映射会是什么样子?

谢谢你的帮助!

cre*_*mor 5

当然NHibernate需要一个用于每个类层次表映射的鉴别器,当从数据库获取一行时,它应该如何识别不同的子类呢?

如果只有一个接口实现,为什么要映射它?只需将该类映射为普通实体(无继承).

编辑:忘记您可能在映射中引用了该接口.在这种情况下,你可以尝试一个table-per-concrete-class映射标记基类(接口),abstract="true"如下所述:http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcrete