我现在正在与 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 查询中的很多“左外连接”,这些我并不真正需要,它也降低了查询的性能。
在这种情况下,是否有可能摆脱多态性?有什么方法可以更改继承模型并从不在层次结构中的其他类派生基类?