0

我有一个接口和一个实现这个接口的类。

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 映射:将层次结构保存到没有鉴别器的单个表

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

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

感谢您的帮助!

4

1 回答 1

5

当然 NHibernate 需要一个鉴别器来进行每类层次结构映射,否则在从数据库中获取一行时它应该如何识别不同的子类?

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

编辑:忘记了您可能在映射中引用了接口。在这种情况下,您可以尝试使用每个具体类的表映射标记基类(接口),abstract="true"如下所述:http: //nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcrete

于 2011-05-11T09:13:09.860 回答