我在 nHibernate 中有以下查询。其思想是获取某个数据组的第一次和最后一次测量时间。
var measurements = _session.Query<Measurement>()
.Where(x => categories.Contains(x.CategoryId));
first = measurements.Min(o => o.StartTime);
last = measurements.Max(o => o.StartTime);
SQL Server Profiler 提供以下输出:
exec sp_executesql N'select cast(min(measuremen0_.StartTime) as DATETIME) as col_0_0_ from Measurement measuremen0_ where measuremen0_.Category in (@p0 , @p1)',N'@p0 int,@p1 int',@p0=7654321,@p1=3324673
exec sp_executesql N'select cast(max(measuremen0_.StartTime) as DATETIME) as col_0_0_ from Measurement measuremen0_ where measuremen0_.Category in (@p0 , @p1)',N'@p0 int,@p1 int',@p0=7654321,@p1=3324673
我可以在不使用 HQL 的情况下以某种方式优化此操作,以便它只向数据库服务器创建一个请求吗?
最佳答案
你看过Future Queries吗? ?我认为它也适用于 linq 查询。
关于c# - 优化 nHibernate 中的最小和最大查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679062/