将 Azure 移动应用程序与已删除的记录同步

问题描述 投票:0回答:1

我正在研究这个示例: https://learn.microsoft.com/en-us/azure/developer/mobile-apps/azure-mobile-apps/quickstarts/xamarin-forms/offline?pivots=vs2022-windows 它有效,我可以添加和编辑记录,并且它已正确同步到云,当我在第二台设备上刷新时,更改会正确更新。

现在我也想删除记录,所以我在示例代码中添加了一个删除按钮,按下时称为:

await _service.RemoveItemAsync(item);

这也有效,记录会从离线数据库和云端删除。

不幸的是,在第二台设备上,当我单击刷新按钮时,已删除的记录仍然存在。它不会从离线数据库中删除。我必须清除离线数据库,然后才能正确同步。

这是刷新按钮上的代码:

public async Task RefreshItemsAsync()
{
   await InitializeAsync();
    
   // First, push all the items in the table.
   await _table.PushItemsAsync();
    
   // Then, pull all the items in the table.
   await _table.PullItemsAsync();
}

第二台设备上是否还需要执行任何其他操作才能删除已删除的记录?

我发现有关此内容的旧帖子说我们必须启用软删除,但这在当前的移动应用程序中似乎不再存在?

azure azure-mobile-services offline
1个回答
0
投票

软删除仍然存在于当前的 Azure 移动应用程序库中。您可以在表选项中启用它 - 如下所示:

[Route("tables/soft")]
[ExcludeFromCodeCoverage(Justification = "Test suite")]
public class SoftController : TableController<EFMovie>
{
    public SoftController(MovieDbContext context) : base()
    {
        Repository = new EntityTableRepository<EFMovie>(context);
        Options = new TableControllerOptions
        {
            EnableSoftDelete = true
        };
    }
}

这实际上来自源代码中的一个测试用例。一旦您启用软删除并删除一些项目(只有启用软删除后启用的项目才会受到影响),删除内容将在同步时传播到第二台设备。

© www.soinside.com 2019 - 2024. All rights reserved.