2

在查询中同时使用 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>();
4

0 回答 0