2015-11-04 252 views
1

我刚刚开始使用Azure移动服务,并且我不确定我是否了解软删除的工作原理。如何触发软删除?

我正在研究Windows控制台可执行文件,负责填充使用移动服务同步对iOS应用程序进行同步的Azure移动数据库。它使用实体框架连接到数据库。

我插入的记录,和更新记录,并将它们显示在没有问题的手机。但是当我删除记录时,它们就消失了。

我本来希望表中有一个触发器,它会设置__deleted标志,以便删除记录将从iOS应用程序中删除。但这并没有发生。

那么,我该如何删除一条记录呢?

是做正常删除了正确的程序,我需要找出原因触发没有运行?

或者我应该设置__deleted标志,我自己?

还是有别的东西完全,我应该做的事?

=========附加评论=========

如果我理解这一点,如果我设置__delete标志上蔚蓝的数据库中的记录,同步过程将删除手机本地数据库中的匹配记录。

将它删除记录的同步完成后?

或者有什么方法让我知道同步已完成,并且删除记录是安全的吗?

或者我应该让删除记录累积?

+0

我已经设置了_deleted = true,并且在我的数据库中它已被设置为true并且记录没有被删除,但是当我将我的iOS设备与服务同步时,记录仍然存在于我的设备中,这里 ? – superB

回答

2

为了在直接访问数据库时将记录标记为已删除,您需要自己设置__deleted标志。有一个触发器会将__updatedAt设置为__deleted设置的时间。这样,当你的移动应用程序查询更新时,它会看到记录已被删除。

只有当您通过Mobile Services REST API访问数据时,它才会将HTTP DELETE转换为为您设置__deleted。

编辑补充回应评论

是,当移动设备同步与__deleted创下的记录,它会删除掉该设备记录。

您保留删除记录的时间取决于您期待的记录数量,共享这些记录的设备数量以及您可能用于保存记录的其他业务需求。Adrian链接的文章有一些示例调度程序,用于在软删除后30天内删除记录。

本文还建议您定期清除移动应用程序并从服务器重新下载整个数据集,以确保它不会与留存在服务器上的已删除记录的滞留记录卡住(例如,在与软删除周期相比使用非常少的设备,在本例中为30天)。

+0

你可以看看问题中的其他意见吗? –

+0

请参阅编辑答案。 –

+0

@EricHedstrom我已经设置了_deleted = true,并且在我的数据库中它已被设置为true并且记录不会被删除,但是当我将iOS设备与服务同步时,记录仍然存在于我的设备中,这里 ? – superB