1
我需要執行類似於T-SQL這樣的分組聚集:您可以使用NH3執行復雜的聚合操作嗎?
select b.Name as [Grouped Name],
COUNT(distinct a.ID) as [Grouped Count],
COUNT(distinct c1.ID) as [Second Group Count],
COUNT(distinct c2.ID) as [Third Group Count]
from TableA a
left join TableB b on a.ID = b.TableAID
left join TableC c1 on a.ID = c1.TableAID and c1.SomeCondition = 1
left join TableC c2 on a.ID = c2.TableAID and c2.SomeCondition = 2
group by b.Name
order by b.Name
我一直在試圖建立一個對象模型,然後使用NH3映射它做了一些嘗試,然後再建一個將構建這種SQL語法的查詢,但我沒有取得成功。
這是可以使用NH3做的事情嗎?如果是這樣,有沒有辦法在LINQ中做到這一點?或Criteria API?或HQL?
在這一點上,我對任何事情都是開放的。我只需要指出正確的方向,因爲到目前爲止我所有的兔子洞都沒有引導我到任何地方。
的LINQ到目前爲止,我已經試過是這樣的:
//act
var query = from a in session.Query<TableA>()
orderby a.TableB.Name
select
new
{
Grouped Name = a.TableB.Name,
GroupedCount = a.Count(),
SecondGroupCount = a.TableC.Count(c => c.SomeCondition == 1),
ThirdGroupCount = a.TableC.Count(c => c.SomeCondition == 2),
};
var results1 = query.ToList();
我也有一組嘗試過通過但無論我做什麼,NH3如果我是指表C中總是拋出一個異常超過一個聚合。如果我只有一個聚合,它會執行查詢。如果我試圖用兩個聚合體來做,我會得到一個異常。