Azure移动服务脱机数据同步 - pullWithQuery出错

时间:2015-08-19 15:57:10

标签: ios azure core-data azure-mobile-services

我使用Azure移动服务作为后端。实现了数据结构,我使用Fiddler测试了CRUD调用。一切似乎都是对的。

然后我实现了与客户端iOS设备的离线数据同步。顺便说一句,我遵循了本教程:https://azure.microsoft.com/en-gb/documentation/articles/app-service-mobile-ios-get-started-offline-data-preview/

我的问题是当我尝试使用pullWithQuery函数同步数据时。我得到这个错误:

2015-08-19 11:36:12.525 Hykso[1820:330268] Logged in as Facebook:10155931659265500
2015-08-19 11:36:30.285 Hykso[1820:330522] ERROR Error Domain=com.Microsoft.WindowsAzureMobileServices.ErrorDomain Code=-1302 "{"message":"An error has occurred."}" UserInfo=0x14671c30 {NSLocalizedDescription={"message":"An error has occurred."}, com.Microsoft.WindowsAzureMobileServices.ErrorResponseKey=<NSHTTPURLResponse: 0x14584de0> { URL: https://hyksomobileservice.azure-mobile.net/tables/Athlete?$top=50&__includeDeleted=true&$skip=0&__systemProperties=__createdAt%2C__updatedAt%2C__deleted%2C__version } { status code: 500, headers {
    "Cache-Control" = "no-cache";
    "Content-Length" = 36;
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Wed, 19 Aug 2015 15:36:28 GMT";
    Expires = 0;
    Pragma = "no-cache";
    Server = "Microsoft-IIS/8.0";
    "X-Powered-By" = "ASP.NET";
} }, com.Microsoft.WindowsAzureMobileServices.ErrorRequestKey=<NSMutableURLRequest: 0x14657830> { URL: https://hyksomobileservice.azure-mobile.net/tables/Athlete?$top=50&__includeDeleted=true&$skip=0&__systemProperties=__createdAt%2C__updatedAt%2C__deleted%2C__version }}

我刚刚使用Fiddler测试了相同的get调用,我收到了这条消息:

exceptionMessage=The specified type member 'Version' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

有没有人有建议给我调试这个?谢谢!

2 个答案:

答案 0 :(得分:1)

(首先请确保您使用Mobile Services topic,而非使用移动应用主题。对于本文,它们非常相似,因此不是您的问题。)

错误看起来很奇怪,它表明您的服务器设置有问题。您的客户端正在发送询问系统属性__createdAt, __updatedAt, __deleted, and __version的查询,但不知何故,&#34;版本&#34; part被翻译成无效的LINQ查询。如果从Core Data模型中删除ms_version列,则不会请求版本,但是您无法进行任何冲突处理。

根据EF错误消息,您必须使用.NET后端。使用服务器项目中的默认TodoItem类型进行测试时会发生什么?您的数据类需要扩展EntityData以确保正确映射所有内容。 (您可以使用ITableData,但这更先进。)

在调试方面,您可以在IIS express上本地运行服务器项目,并在通过Fiddler访问端点后设置断点。您还可以使用远程调试转到实际的远程服务。

有关此方面的教程,请参阅:

答案 1 :(得分:0)

是否正在为数据中的“版本”列分配任何值?我使用C#开发了我的应用程序并遇到了类似的问题。关于版本有两个限制。首先,不要在客户端上触摸它只是在模型中定义它,而不是分配给它。其次,在C#中我们需要以这种方式定义它

[Version]
public byte[] Version { get; set; } 

我不知道Objective-c

中[Version]的等价物