мне нужно выполнить агрегацию группировку, подобную что-то подобное в 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? или 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 всегда вызывает исключение, если я имею в виду TableC в более один агрегат. Если у меня есть только один агрегат, запрос выполняется. Если я попытаюсь сделать это с двумя агрегатами, я получаю исключение.