Лично, я не продаюсь на WF. Это - полноценность, не было так же очевидно для меня как другие новые технологии MS, как WPF или WCF.
я думаю, что WF будет использоваться в большой степени в бизнес-приложениях в будущем, но у меня нет планов использовать его, потому что это не походит на правильный инструмент для задания для моих проектов.
К сожалению, критерии немного ограничены.
Попробуйте следующее:
session.CreateCriteria(typeof(SomeTable), "st")
.SetProjection( Projections.ProjectionList()
.Add(Projections.GroupProperty("st.id"))
.Add(Projections.GroupProperty("st.NonAggregateColumn"))
.Add(Projections.RowCount(), "rowcount")
.Add(Projections.Avg("at.YetAnotherNonAggregate"), "avg"));
.CreateCriteria( "st.OtherTables", "at", JoinType.InnerJoin)
.List<object[]>();
Возможно, вам нужно немного поиграть, это скорее предположение. Это также может оказаться невозможным.
Результат должен быть примерно таким:
select
st.id,
st.NonAggregateColumn,
count() as "rowcount",
avg(at.YetAnotherNonAggregate) as "avg"
from
SomeTable st inner join AnotherTable at on ...
group by
st.id,
st.NonAggregateColumn
Обычно:
DetachedCriteria
. Подробнее см. в документации . в
, exists
и т. Д.) AnotherTable
и перейти к SomeTable
. Это могло бы быть альтернативным решением.