猿问

Xamarin Forms pull async table.CreateQuery()

想知道是否有人以前见过这个,如果是,他们是如何分类的


我在 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()有什么办法可以防止这种情况发生,以便返回我的行?


MMMHUHU
浏览 208回答 1
1回答

千万里不及你

这个 OFFSET 如何在 table.CreateQuery()... 产生的查询中结束?SDK 设置的偏移量等于拉动光标位置。摘自GitHub。if (offset.HasValue){&nbsp; &nbsp; this.sql.AppendFormat(" OFFSET {0}", offset.Value);}也取自GitHub。internal class PullCursor{&nbsp; &nbsp; public int Position&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; get { return this.initialSkip + this.totalRead; }&nbsp; &nbsp; }...有什么办法可以防止这种情况发生,以便返回我的行?您的第一个查询在没有偏移的情况下运行(cursor.Position 为 0),然后 SDK 将偏移增加总读取数。SDK 增加总读取的事实告诉我您正在返回行。我认为当 SDK 收到结果并保存到本地存储时出现问题。这是一个与您类似的问题。一个回复建议启用 SQLite 日志记录以获取更多信息,并解释了两次 API 调用的原因。
随时随地看视频慕课网APP
我要回答