我遇到了 NHibernate v3.2.0 的问题,并且有以下查询:
class DocumentBase {}
class Requisition: DocumentBase {}
class Order: DocumentBase {}
Repository.GetAll<DocumentBase>()
.Where(d => (d is Requisition) && ((Requisition)d).ProductItem != null)
基本查询旨在列出所有文档,但也可以按类型(和准类型,例如没有产品的文档)过滤此文档。在上面的代码中只有一个条件,但谓词可以更复杂,例如:
Repository.GetAll<DocumentBase>()
.Where(d =>
((d is Requisition) && ((Requisition)d).ProductItem != null) ||
(d is Order) ||
[...]
)
执行时,我收到InvalidPathException
message Invalid path: 'd.ProductItem'
。有任何想法吗?是否支持?
到目前为止,我设法通过以下查询绕过了这个错误:
Repository.GetAll<DocumentBase>()
.Where(d =>
(d is Requisition) &&
Repository.GetAll<Requisition>()
.Any(r => r.Id == d.Id && r.ProductItem != null)
)
但就性能而言,它绝对不是最佳选择。