2

クエリで order by、条件付きプロジェクション、および SetFirstResult() を一緒に使用すると、次のエラーが発生します。

Count=4 のこの SqlParameterCollection の無効なインデックス 4

私の経験では、このエラーは通常、1 つのフィールドが 2 つのプロパティにマップされている場合に発生します。しかし、この状況ではそうではありません。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