Răz*_*nda 5 c# nhibernate queryover
有如下查询:
var subquery = SessionFactory.GetCurrentSession()
.QueryOver<SomeEntity>()
.Where(_ => _.SomeOtherEntity.Id == someId)
.SelectList(list => list
.SelectGroup(x => x.SomeGroupByProperty)
.SelectMax(x => x.MaxPerGroupProperty))
.List<dynamic>();
Run Code Online (Sandbox Code Playgroud)
生成的sql正在选择两者SomeGroupByProperty和最大值MaxPerGroupProperty.是否可以将其分组,SomeGroupByProperty但只选择最大值MaxPerGroupProperty?这是为了将子查询结果与父查询中的包含一起使用.
这是NHibernate jira(标准查询)中的一个未解决的问题:https://nhibernate.jira.com/browse/NH-1426
你可以这样做
var subquery =
QueryOver.Of<SomeEntity>()
.Where(_ => _.SomeOtherEntity.Id == someId)
.Select(
Projections.ProjectionList()
.Add(Projections.SqlGroupProjection("max(MaxPerGroupProperty) as maxAlias", "SomeGroupByProperty",
new string[] { "maxAlias" }, new IType[] { NHibernate.NHibernateUtil.Int32 })));
var parentQuery = session.QueryOver<SomeEntity2>()
.WithSubquery.WhereProperty(x => x.MaxPerGroupPropertyReference).In(subquery).List();
Run Code Online (Sandbox Code Playgroud)
不像使用实体属性那么漂亮,但它确实有效.
| 归档时间: |
|
| 查看次数: |
3423 次 |
| 最近记录: |