使用discriminator与Fluent NHibernate实现多级继承

本文关键字:实现 多级 继承 NHibernate Fluent discriminator 使用 | 更新日期: 2023-09-27 18:15:06

我在一个令人羡慕的情况下,不得不与一个遗留数据库集成,幸运的是只读目的,并选择使用NHibernate。到目前为止,一切都很好,但是我有一个新要求,真让我摸不着头脑。

在今天之前,我在表中有一列作为鉴别符,但现在事实证明,在某些情况下我需要有多个鉴别符列。这是可能的NHibernate吗?

我已经研究过使用公式,这是有效的,但现在我有一个问题,我需要排除"未知"子类(那些还没有映射)。例如:

DiscriminateSubClassesOnColumn("")
    .Formula("case ... when ... then ... when .. then ... else 'unknown' end");

我希望能够过滤掉所有的"未知"…

编辑:我认为一个可能的解决方案是使用AlwaysSelectWithValue(),启用它会有什么影响?我相信它与非hibernate映射xml中的force相同。

使用discriminator与Fluent NHibernate实现多级继承

public BaseClassMap()
{
    Where("discriminatorColumn <> 'unknown'");
    // or
    Where("discriminatorColumn = 'known1' or discriminatorColumn = 'known2'");
}