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

时间:2011-05-11 02:43:11

标签: 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...
}

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

我已经阅读了这个问题和相关的答案,除了我没有使用FNH NHibernate Mapping: Save hierarchy to single table without discriminator

  1. 我想知道使用discriminatorsubclass属性是否必须?

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

  3. 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:5)

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

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

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