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中总是抛出一个异常超过一个聚合。如果我只有一个聚合,它会执行查询。如果我试图用两个聚合体来做,我会得到一个异常。