想知道是否有人以前见过这个,如果是,他们是如何分类的我在 Xamarin Forms 中对 azure 数据执行拉取异步操作if (!CrossConnectivity.Current.IsConnected) { return; } table = Client.GetSyncTable<T>(); var pullOptions = new PullOptions() { MaxPageSize = 100 }; IMobileServiceTableQuery<T> query = table.CreateQuery(); if(Client.SyncContext.IsInitialized) await table.PullAsync("qryAllEvents", query, pullOptions);我知道这应该带回 5 条记录。在检查 Sql Profiler 并在 node.js 后端放置断点时,我可以看到运行了 2 个查询,一个使用 OFFSET 0,一个使用 OFFSET 5,因此它删除了所有 5 条记录。SELECT * FROM [dbo].[Events] WHERE ([updatedAt] >= @p1) ORDER BY [updatedAt] OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY; ',@params=N'@p1 datetimeoffset(7)',@p1='1970-01-01 00:00:00 +00:00'SELECT * FROM [dbo].[Events] WHERE ([updatedAt] >= @p1) ORDER BY [updatedAt] OFFSET 5 ROWS FETCH NEXT 50 ROWS ONLY; ',@params=N'@p1 datetimeoffset(7)',@p1='1970-01-01 00:00:00 +00:00'这个 OFFSET 如何在由此产生的查询中结束,table.CreateQuery()有什么办法可以防止这种情况发生,以便返回我的行?
1 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
这个 OFFSET 如何在 table.CreateQuery()... 产生的查询中结束?
SDK 设置的偏移量等于拉动光标位置。
摘自GitHub。
if (offset.HasValue)
{
this.sql.AppendFormat(" OFFSET {0}", offset.Value);
}
也取自GitHub。
internal class PullCursor
{
public int Position
{
get { return this.initialSkip + this.totalRead; }
}
...有什么办法可以防止这种情况发生,以便返回我的行?
您的第一个查询在没有偏移的情况下运行(cursor.Position 为 0),然后 SDK 将偏移增加总读取数。SDK 增加总读取的事实告诉我您正在返回行。我认为当 SDK 收到结果并保存到本地存储时出现问题。这是一个与您类似的问题。一个回复建议启用 SQLite 日志记录以获取更多信息,并解释了两次 API 调用的原因。
- 1 回答
- 0 关注
- 205 浏览
添加回答
举报
0/150
提交
取消