在移动客户端更新行然后同步

时间:2017-02-10 07:10:45

标签: xamarin.android azure-mobile-services

问题:从移动客户端更新行时遇到问题(使用离线同步)。

场景:我们正在使用移动客户端中的类来保存新项目。但是,当我们从服务器检索数据时,我们会使用ClassDto。由于此设置,服务器后端有两个表控制器:ClassController:TableController<Class>ClassDtoController:TableController<Class>。前者用于PostClass请求,后者用于GetAllClass请求。

在客户端,移动数据库存储要在ClassDto本地表中查看的行,并且只有使用移动设备的已保存条目位于Class本地表中(即ClassDto条目计数!=类条目计数)。

问题详情:我们需要使用该设备编辑类的功能。我们通过将目标ClassDto的所有(已编辑和未编辑的)详细信息(例如id,版本,更新时间,创建时等)复制到Class的新实例中然后在IMobileServicesSyncTable上使用UpdateAsync来实现此目的。

ClassController:TableController<Class>中的日志中,请求转到此表但发生错误。

使用try-catch来暴露异常,这就是我们得到的:

消息:&#34;处理HTTP请求导致异常。请参阅响应&#39;返回的HTTP响应。有关详细信息的此异常的属性。&#34;

堆栈追踪:

at Microsoft.Azure.Mobile.Server.Tables.EntityUtils.<SubmitChangesAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Mobile.Server.EntityDomainManager`1.<UpdateAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Mobile.Server.EntityDomainManager`1.<UpdateAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Mobile.Server.TableController`1.<PatchAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at SynthesisServer.Controllers.SaleController.<PatchSale>d__3.MoveNext()

使用PostMan做补丁并收到此消息:

{
  "message": "An error has occurred."
}

问题:我们如何实现编辑功能?此外,是否可以仅使用一个表控制器来保存和检索条目?我们使用了两个控制器,因为它无法在移动客户端中进行连接。我们尝试从ClassController返回ClassDto但导致错误。我们还尝试将ClassDto推送到ClassController,但这又导致了错误。

0 个答案:

没有答案