将特定数据从Azure同步到Xamarin(脱机同步)

将特定数据从Azure同步到Xamarin(脱机同步),azure,xamarin,synchronization,azure-mobile-services,Azure,Xamarin,Synchronization,Azure Mobile Services,我正在尝试筛选要从Azure同步的数据。然而,我似乎无法找到工作的地方。有什么想法吗 var allItems=等待GetMyListItems; var myIdsInList=allEdrops.Selectc=>c.Id.ToLower.ToList; 这个不行: var query=this.myTable.CreateQuery.Wherec=>myIdsInList.Containsc.Id.ToLower//不行 这一个有效,但得到所有的值,这是我不想要的 var query=th

我正在尝试筛选要从Azure同步的数据。然而,我似乎无法找到工作的地方。有什么想法吗

var allItems=等待GetMyListItems; var myIdsInList=allEdrops.Selectc=>c.Id.ToLower.ToList; 这个不行:

var query=this.myTable.CreateQuery.Wherec=>myIdsInList.Containsc.Id.ToLower//不行 这一个有效,但得到所有的值,这是我不想要的

var query=this.myTable.CreateQuery//作品 等待this.myTable.PullAsyncallmyTableItems,查询; 在MobileServiceClient中使用SyncTable并附加任何LINQ查询

只读MobileServiceClient\u MobileServiceClient=新的MobileServiceClientAzure移动应用程序URL; 异步任务GetItems { 返回wait(u mobileseserviceclient.GetSyncTable.Wherec=>myIdsInList.Containsc.Id.ToLower.ToListAsync.configurewaitfalse); }
下面是一个我使用客户端SDK与Azure移动应用程序交互的通用类:

使用fiddler捕获网络跟踪,您可以发现您的筛选查询如下所示:

GET https://{your-app-name}.azurewebsites.net/tables/{table-name}?$filter=((((((((((id eq '1') or (id eq '2')) or (id eq '3')) or (id eq '4')) or (id eq '5')) or (id eq '6')) or (id eq '7')) or (id eq '8')) or (id eq '9')) or (id eq '10'))
对于少量ID,我可以按预期检索记录。对于您的场景,您可以从Web服务器IIS触摸下的maxQueryString。对于C后端,您可能还需要改进ASP.NET运行时下的maxQueryStringLength

此外,您还可以点击用于确定$filter语法树中的最大节点数的


要解决此问题,您可以为您的移动应用程序安装日志,然后登录KUDU以查看日志文件,或者只需登录Azure Portal以检查移动应用程序的MONITORING>log stream blade下的流日志。此外,对于C后端,您可以遵循类似于设置MaxNodeCount的方法。对于Node.js后端,我没有找到任何教程,您可以按照进行调查,或者您需要迭代ID并发送多个同步数据的请求。

如果您取出toLower iirc,它是否有效?有什么东西告诉我,这可能会导致问题否。把它放在那里,因为我认为如果标题不同,我会得到任何结果。你是说等待this.myTable.PullAsyncallmyTableItems,this.myTable.CreateQuery.Wherec=>myIdsInList.Containsc.Id.ToLower;不工作?GetItems方法只会根据本地SQLite数据存储筛选数据。据我所知,op希望将特定数据从Azure端同步到本地SQLite db,因此我认为问题将集中在PullAsync操作上,查询将等待this.myTable.PullAsyncallmyTableItems、this.myTable.CreateQuery.Wherec=>myIdsInList.Containsc.Id.ToLower;。