我真的可以使用一些指导如何将这个SQL查询带到NHibernate QueryOver.我尝试使用Linq,因为我对Linq更熟悉.我们正在开发的项目是使用QueryOver,因此最好现在保持这条路线.
工作SQL查询:将DateTime舍入为1分钟并正确分组/排序/计数...
select dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0), COUNT(*)
from PartData
group by dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0)
order by dateadd(minute,(datediff(minute,0,dateTimeColumn)/1)*1,0)
Run Code Online (Sandbox Code Playgroud)
返回预期结果:
2012-08-31 00:00:00.000, 3
2012-08-31 00:01:00.000, 4
2012-08-31 00:02:00.000, 3
2012-08-31 00:03:00.000, 3
2012-08-31 00:04:00.000, 4
2012-08-31 00:05:00.000, 3
2012-08-31 00:06:00.000, 3
2012-08-31 00:07:00.000, 4
2012-08-31 00:08:00.000, 3
Run Code Online (Sandbox Code Playgroud)
编辑
我越来越近了......
private IQueryOver<entities.PartData, entities.PartData> PartPerHourQuery(ISession session)
{
return session.QueryOver<entities.PartData>()
.Select(
Projections.Alias(
Projections.GroupProperty(
Projections.SqlFunction(
new SQLFunctionTemplate(NHibernateUtil.DateTime, "DateAdd(mm,1,Date)"),
NHibernateUtil.DateTime, _partsDate))
, "Date"),
Projections.Alias(Projections.RowCount(), "Count"))
.TransformUsing(Transformers.AliasToBean<entities.PartsPerHour>());
}
Run Code Online (Sandbox Code Playgroud)
产生以下SQL:
SELECT DateAdd(mm,1,dateTimeColumn), count(*)
FROM [PartData]
GROUP BY DateAdd(mm,1,dateTimeColumn)
Run Code Online (Sandbox Code Playgroud)
只需要弄清楚如何在那里获得约会:)
以下是我为构建repo和subrepos所采取的步骤.
一切都托管在Bitbucket上.
这是目录结构:mainrepo --subrepo1(主项目)--subrepo2(类库)
我花了无数个小时试图让这个工作,我必须错过一些明显的东西.
是什么导致了这个错误,我错过了什么?随着项目的增长,我需要能够添加额外的子目录.
好吧,经过几个小时的阅读和反复试验,它终于打动了我.Mercurial并不真的想做SubRepos ......至少不是TortoiseHg和Bitbucket.如果我弄错了,而且你不想投票给一个粗鲁的回应,类似于"当然它有效,你没有阅读官方文档",那么请提供一个简单的例子,说明如何通过TortoiseHg最新这将成功推向Bitbucket.也许是一个利用mercurial和bitbucket以及subrepos的开源项目?
总而言之,如果我们将我们的类库保留在单独的repos中,并且推荐的方法是不使用subrepos("作为最后的手段"),那么为所有依赖的mercurial repos捕获版本的建议方法是什么?将所有依赖关系repos跳转到正确的版本以进行错误修复等.
我怀疑我会使用Tags来标记版本.那么,推荐的方法是手动转到所有库并使用通用版本标记标记每个repo,然后手动还原为所有程序集的标记?
请不要使用有关工作流程管理复杂性的所有技术术语.在SO上有很多关于此的很好的阅读.我希望有一个简单的单个主exe项目与一些DLL类库.