gpt4 book ai didi

c# - Xamarin Forms 拉取异步表。CreateQuery() 默认添加了 OFFSET

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:47 25 4
gpt4 key购买 nike

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

我在 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() 生成的查询中?有什么方法可以阻止这种情况,以便返回我的行?

最佳答案

这个 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 收到结果并保存到本地存储时出现问题。这是一个类似的SO question给你的。一篇回复建议启用 SQLite 日志记录以获取更多信息,并解释了两个 API 调用的原因。

关于c# - Xamarin Forms 拉取异步表。CreateQuery() 默认添加了 OFFSET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com