问题:从移动客户端更新行时遇到问题(使用离线同步)。
场景:我们正在使用移动客户端中的类来保存新项目。但是,当我们从服务器检索数据时,我们会使用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,但这又导致了错误。