Xamarin.forms Azure移动服务与select子句同步不受支持?

Xamarin.forms Azure移动服务与select子句同步不受支持?,xamarin.forms,azure-mobile-services,Xamarin.forms,Azure Mobile Services,我在我的Xamarin Forms应用程序中有一个同步操作已经有很长一段时间了,直到这几周它才开始抛出异常,这让我觉得可能是服务更改或更新中引入了什么? 启动时,我使用以下方式与m Azure移动服务同步所有数据: await this.client.SyncContext.PushAsync(); if (signedInUser != Guid.Empty) { await this.MyTable.PullAsync( "myWorkoutsOnly", this.MyTab

我在我的Xamarin Forms应用程序中有一个同步操作已经有很长一段时间了,直到这几周它才开始抛出异常,这让我觉得可能是服务更改或更新中引入了什么? 启动时,我使用以下方式与m Azure移动服务同步所有数据:

await this.client.SyncContext.PushAsync();

if (signedInUser != Guid.Empty)
{
  await this.MyTable.PullAsync(
  "myWorkoutsOnly",
  this.MyTable.CreateQuery().Select(u => u.UserId == signedInUser));
}
正如我所说,我从来没有遇到过这个代码的问题。但现在,我得到了:

System.ArgumentException: Pull query with select clause is not supported
我只想同步与已登录用户匹配的数据,那么是否有其他方法来实现这一点

我只想同步与已登录用户匹配的数据,那么是否有其他方法来实现这一点

您可以利用以下代码实现以下目的:

var queryName=$“incsync{UserId}”;
var query=table.CreateQuery()
。其中(u=>u.UserId==signedUser);
wait table.PullAsync(queryName,query);
对于
Select
方法,您可以将特定属性检索到本地存储中,而不是在线表中的所有属性,如下所示:

var queryName=$“incsync:s:{typeof(T).Name}”;
var query=table.CreateQuery()
.Select(r=>new{r.Text,r.Complete,r.UpdatedAt,r.Version});
wait table.PullAsync(queryName,query);
有关更多详细信息,请参阅阿德里安·霍尔(adrian hall)的书

更新:


正如Joagwa所评论的,您可以更改服务器端代码,并限制仅由登录用户检索的数据。有关更多详细信息,请参阅。

如果它是您的Azure服务,您可以修改表控制器以仅返回与当前用户相关的值。我们已经在我正在进行的一个项目中做到了这一点。我会看看是否可以分享一些实现谢谢@Joagwa,我已经完成了。奇怪的是它最近才开始抛出这个异常?