クエリで 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>();