NHibernate QueryOver 仅用于父类(super class)

标签 nhibernate polymorphism queryover superclass

我现在正在与 NHibernate 和 Table-per-class 继承作斗争。

我有一个基类(我们称之为 Base)和 10 个派生类。有时我只想对基类进行查询,而无需对子类进行左外部联接。

var query = dao.CurrentSession.QueryOver<Base>()
   .JoinQueryOver(b => b.Property)
   .Where(p => p.FirstName == "Max")
   .Select(a => a.Id).Take(10);

我得到的是 sql 查询中的很多“左外连接”,我并不真正需要它,它也会降低查询的性能。

在这种情况下是否有可能摆脱多态性?有什么方法可以更改继承模型并从不在层次结构中的其他类派生基类?

最佳答案

在您的 Base 映射文件中,设置以下内容:

polymorphism=”explicit”

关于NHibernate QueryOver 仅用于父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11262729/

相关文章:

c# - 如何在linq中选择最大的字符串到nhibernate

NHibernate Session.Flush & Evict vs Clear

c++ - 从 Derived* 转换为 Base*&

C++纯虚类问题

NHibernate 在 QueryOver 中检查相同的连接

c# - QueryOver 错误 : Unrecognised method call in expression value

c# - NHibernate.映射异常 : No persister for: XYZ

c# - 流利的 NHibernate : How to tell it not to map a base class

java - 为什么 Java 认为我的构造函数调用不明确?

nhibernate - 使用 NHibernate QueryOver,如何在日期之间添加类型安全限制