任意条件的非hibernate查询



我有一个像

这样的表结构
Product {List<Cost> Costs}
Cost{List<Invoice> Invoices, Product product}
Invoice{bool isIncluded}

需要一个查询来获取所有没有包含发票的成本产品(isIncluded=false for all)

我试过这样做:

Product pro= null;
Product p = null;
        var costQuery = QueryOver.Of<Cost>()
            .JoinAlias(c => c.Product, () => p)
            .Where(() => p.Id == pro.Id)                
            .WhereNot(c=>c.Invoices.Any(i=>i.IsIncluded))
            .Select(c => c.Id);
        var query = CurrentSession.QueryOver<Product>(() => pro)                
                                  .WithSubquery.WhereExists(costQuery);

在查询错误中使用'Any':

无法识别的方法调用:System.Linq.Enumerable:Boolean任何(发票)(System.Collections.Generic。IEnumerable 1[Trigger.StageGate.Services‌​.BusinessEntities.Invoice], System.Func 2[Trigger.StageGate.Services.BusinessEntities.Invoice,System.Boolean])

try:

var costQuery = QueryOver.Of<Cost>()
        .JoinAlias(c => c.Product, () => p)
        .Where(() => p.Id == pro.Id)            
        .JoinQueryOver<Invoice>(c => c.Invoices)
        .WhereNot(i => i.IsIncluded)    
        .Select(c => c.Id);

最新更新