2016-02-26 101 views
0

條件計數考慮下面的實體:FluentNHibernate許多一對多的兒童

Package  Manifest  Content 
----------  ----------  ----------  
Id    PackageId  Id 
Name   ContentId  Name 
           Status 

的關係是多到很多,其中一個包可以有多個內容和內容可以屬於多個包。

我想要做的是,對於給定的Package.Id,得到具有特定Status的所有Content的計數。

我的映射工作正常,但我一直無法弄清楚如何在不加載Content的情況下實現Content的條件計數。一種選擇是在映射中使用ApplyChildFilter並與ExtraLazyLoad一起使用,但這意味着我必須爲此創建專用屬性。

有沒有辦法實現這一點,而不會回落在CreateSQLQuery

回答

0

以下查詢是否適合您?

session 
    .QueryOver<Package>() 
    .JoinQueryOver(x => x.Manifest) 
    .JoinQueryOver(x => x.Content) 
    .Where(x => x.Status == someStatus) 
    .Select(Projections.RowCount()) 
    .FutureValue<int>() 
    .Value 
+0

的問題是,該清單沒有明確映射,因爲它是通過'HasManyToMany.Table( 「清單」)隱含映射。ParentKeyColumn( 「包標識」)。ChildKeyColumn( 「內容識別」)'。如果我爲Manifest添加了明確的映射和屬性,我認爲你的提議會起作用,但是我希望以某種方式避免這種情況(現在只需使用SQL來基本完成此JOIN)。 –

相關問題