在NHibernate QueryOver SelectGroup中截断日期时间
我有一个相当普通的查询,包含以下内容:在NHibernate QueryOver SelectGroup中截断日期时间,nhibernate,datetime,group-by,truncate,queryover,Nhibernate,Datetime,Group By,Truncate,Queryover,我有一个相当普通的查询,包含以下内容: .SelectList(list => list .SelectGroup(() => txn.GroupField) .SelectGroup(() => txn.Date)) .List<object[]>() 有什么想法吗 谢谢您的查询可能如下所示: Status alias = null; var query = QueryOver.Of(() => alias) .Select(Pro
.SelectList(list => list
.SelectGroup(() => txn.GroupField)
.SelectGroup(() => txn.Date))
.List<object[]>()
有什么想法吗
谢谢您的
查询可能如下所示:
Status alias = null;
var query = QueryOver.Of(() => alias)
.Select(Projections.GroupProperty(
Projections.SqlFunction("date", NHibernateUtil.Date, Projections.Property(() => alias.Date))));
输出(伪sql):
希望这有帮助,干杯 您可能希望使用Formula命令将helper属性添加到地图中,以便能够在查询中使用日期(而不是日期时间)
下面是我的代码中的一个示例;它使用十进制值,但这适用于任何子查询:
模型类具有要映射到公式的以下属性:
public virtual decimal Profit
{
get { return this.SellPrice - this.Cost; }
set { return; }
}
fluentNHibernate地图:
//SellPrice and Cost are columns in the object's table
Map(v => v.Profit).Formula("(SellPrice - Cost)"); // this field is calculated, not read
不过,一定要把公式放在()括号之间
如果您想将公式设置为一个select查询,将日期时间分为一个日期,那么您可以在查询中按该属性分组。非常感谢MonkeyCoder。我尝试将SelectList()/.SelectGroup()用于投影,但失败。
public virtual decimal Profit
{
get { return this.SellPrice - this.Cost; }
set { return; }
}
//SellPrice and Cost are columns in the object's table
Map(v => v.Profit).Formula("(SellPrice - Cost)"); // this field is calculated, not read