c# - 使用鉴别器的 Fluent NHibernate 的多级继承

标签 c# nhibernate inheritance fluent-nhibernate fluent-nhibernate-mapping

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

在今天之前,我在表中有一列作为鉴别器,但现在发现在某些情况下我需要有多个鉴别器列。 NHibernate 可以做到这一点吗?

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

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

我希望能够过滤掉所有“未知”的内容...

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

最佳答案

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

关于c# - 使用鉴别器的 Fluent NHibernate 的多级继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154997/

相关文章:

c# - Windows应用程序打开控制台并在其中写入

n :n relatinship 中的 NHibernate 映射

c# - NHibernate:用于检索非空一对一关联类的条件表达式

iphone - Objective c 类别和继承

java - 在 Java 中强制返回类型缩小?

javascript - JavaScript 中的继承

c# - 在 WPF 中用数千行快速绘制 map

c# - 如何压缩 ASP.NET 中的特定页面

c# - 多对多在 NHibernate 中删除具有共同关联的两个 parent

c# - 使用 Javascript/jQuery 在 silverlight 应用程序中显示 youtube 视频