我现在正在与 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/