为什么没有为 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?
如果要使用页面大小,可以在语句类上使用 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);
希望有帮助。