在查询中同时使用 order by、条件投影和 SetFirstResult() 时,出现此错误:
此 SqlParameterCollection 的索引 4 无效,Count=4
根据我的经验,当您将一个字段映射到两个属性时,通常会发生此错误,如此处所述。但在这种情况下并非如此,查询工作正常,直到我将一个大于 0 的值传递给 SetFirstResult()。
这个用 Nhiberbate 记录的错误看起来很相似,但它在 2 年前就已修复。
关于如何进行的任何建议?这是代码示例:
var query = Session.CreateCriteria<KeepItem>(KeepAlias)
.CreateAlias("Resource", ResourceAlias)
.CreateAlias("Memory", MemoryAlias, JoinType.LeftOuterJoin);
// other code
query.AddOrder
(
Order.Asc
(
Projections.Conditional
(
Restrictions.IsNull(MemoryAlias + ".MinDate"),
Projections.Conditional
(
Restrictions.IsNull(ResourceAlias + ".MinDate"),
Projections.Constant(DateTime.MaxValue),
Projections.Property(ResourceAlias + ".MinDate")
),
Projections.Property(MemoryAlias + ".MinDate")
)
)
);
//other code
query.SetFirstResult(skip);
query.SetMaxResults(take);
return query.List<KeepItem>();