Xamarin.forms Azure移动服务与select子句同步不受支持?
我在我的Xamarin Forms应用程序中有一个同步操作已经有很长一段时间了,直到这几周它才开始抛出异常,这让我觉得可能是服务更改或更新中引入了什么? 启动时,我使用以下方式与m Azure移动服务同步所有数据: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
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,我已经完成了。奇怪的是它最近才开始抛出这个异常?