【问题标题】:Azure App Service Mobile App database synchronization failes if data is deleted如果删除数据,Azure 应用服务移动应用数据库同步失败
【发布时间】:2017-05-10 11:40:36
【问题描述】:

我目前面临这样一个问题:我正在构建一个使用 Xamarin 和 Azure App Service Mobile App 作为云后端的应用程序。问题是,如果我从 Azure 中托管的 DB 中的相应表中删除一些数据,移动设备上的下一个 PullAsync 调用将失败,因为它试图请求删除的记录。有什么方法可以同步删除首先在 Azure DB 中发生然后被拉到设备的记录?

另一种方式运行顺利:如果我从设备中删除记录,Azure DB中相应的记录也会被删除。

【问题讨论】:

    标签: azure xamarin xamarin.ios azure-mobile-services azure-app-service-envrmnt


    【解决方案1】:

    您必须通过在您的服务器上为您需要的每个TableController 启用软删除来使用软删除。此处为 TodoItem TableController 的示例。

    protected override void Initialize(HttpControllerContext controllerContext)
    {
        base.Initialize(controllerContext);
        MobileServiceContext context = new MobileServiceContext();
        DomainManager = new EntityDomainManager<TodoItem>(context, Request, enableSoftDelete: true);
    }
    

    更多信息here

    【讨论】:

    • 昨天我的想法完全一样,但希望有一种真正删除记录的解决方案。好的,将其标记为答案,谢谢!
    • 我还有一个与此相关的问题:在 EntityData 类中,我发现了一个名为“Deleted”的现有属性,我想它可以用于软删除。问题是,当我在移动客户端上更新它的值时,该值不会被推送到 Azure,并且下一次拉取会将其重写为 false 的原始值。有什么方法可以使用它或者我应该创建一些自定义列?
    • 我刚刚发现的是 UpdateAsync 出于某种原因不会将“已删除”真实写入本地设备存储,这就是它没有同步到 Azure 的原因。没有办法解决这个问题
    • 我编辑了答案以显示如何启用软删除。
    • 哦,非常感谢!那么,实际上,我在设备上更新属性本身的技巧根本不起作用?客户端 API 直接忽略它?
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多