为什么没有为 ISession.Execute 的 IStatement 原型提供 pageSize 参数

本文关键字:原型 pageSize 参数 IStatement ISession Execute 为什么 | 更新日期: 2023-09-27 18:30:34

我看到我们可以调用:

      public RowSet ExecuteRowSet(string statement, int? pageSize = null)
    {
        return pageSize.HasValue ? _session.Execute(statement, pageSize.Value) : _session.Execute(statement);
    }

但我们不能打电话:

      public RowSet ExecuteRowSet(BoundStatement statement, int? pageSize = null)
    {
        return pageSize.HasValue ? _session.Execute(statement, pageSize.Value) : _session.Execute(statement);
    }

为什么没有为 BoundStatement提供 pageSize?

为什么没有为 ISession.Execute 的 IStatement 原型提供 pageSize 参数

如果要使用页面大小,可以在语句类上使用 SetPageSize 方法。 因此,对于绑定语句,这可能如下所示:

boundStatement = boundStatement.SetPageSize(100);
RowSet rows = session.Execute(boundStatement);
// Now iterate over the RowSet and subsequent pages will be loaded transparently as needed by the enumerator
foreach(Row row in rows)
{
   // Do something
}

注意:这是为了利用驱动程序中的自动分页功能,而不是用于手动分页方案,例如在应用程序中显示分页 UI。 您提到的另一个重载只是一种快捷方式/方便的方法,用于快速执行 CQL 并选择性地使用自动分页。 这基本上等同于做:

var simpleStatement = new SimpleStatement("SELECT * FROM sometable");
simpleStatement.SetPageSize(100);
RowSet rows = session.Execute(simpleStatement);

希望有帮助。