使用鉴别器使用Fluent NHibernate进行多级继承

jon*_*nii 7 c# nhibernate inheritance fluent-nhibernate fluent-nhibernate-mapping

我处于令人羡慕的状态,不得不与遗留数据库集成,幸运的是出于读取目的,并选择使用NHibernate.到目前为止,一切都很好,但我有一个新的要求让我摸不着头脑.

在今天之前,我在表中有一列可以作为鉴别器,但现在事实证明,在某些情况下,我需要有一个以上的鉴别器列.这可能与NHibernate一起使用吗?

我已经研究过使用可行的公式,但现在我遇到的问题是我需要排除'未知'子类(那些尚未有映射的子类).例如我有这个:

DiscriminateSubClassesOnColumn("")
    .Formula("case ... when ... then ... when .. then ... else 'unknown' end");
Run Code Online (Sandbox Code Playgroud)

我希望能够过滤掉所有"未知"的东西......

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

Fir*_*iro 2

public BaseClassMap()
{
    Where("discriminatorColumn <> 'unknown'");
    // or
    Where("discriminatorColumn = 'known1' or discriminatorColumn = 'known2'");
}
Run Code Online (Sandbox Code Playgroud)