Azure 移动服务离线数据同步 - pullWithQuery 出错

Azure Mobile Service Offline Data Sync - Error on pullWithQuery

我正在使用 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.

有没有人能给我一些建议来调试这个?谢谢!

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

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

我不知道 Objective-c

中 [Version] 的等效项

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

该错误看起来很奇怪,表明您的服务器设置有问题。您的客户端正在发送请求系统属性 __createdAt, __updatedAt, __deleted, and __version 的查询,但不知何故 "version" 部分被转换为无效的 LINQ 查询。如果您从核心数据模型中删除 ms_version 列,则不会请求版本,但您无法进行任何冲突处理。

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

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

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