0

私は次のようなテーブル構造を持っています

Product {List<Cost> Costs}

Cost{List<Invoice> Invoices, Product product}

Invoice{bool isIncluded}

請求書が含まれていないコストを持つすべての製品を取得するためのクエリが必要です (isIncluded=false すべてに対して)

私は次のようなものを試しました:

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 Any[Invoice](System.Collections.Generic.IEnumerable 1[Trigger.StageGate.Services‌​.BusinessEntities.Invoice], System.Func2[Trigger.StageGate.Services.BusinessEntities.Invoice,System.Boolean‌ ])

4

1 に答える 1

0

試す:

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);
于 2013-03-25T12:27:12.683 に答える