我刚刚开始使用Azure移动服务,我不确定我是否理解软删除的工作原理。
我正在使用Windows控制台可执行文件,该可执行文件负责使用移动服务同步填充与iOS应用程序同步的Azure移动数据库。它使用Entity Framework连接到数据库。
我已插入记录并更新记录,并将它们显示在手机上而没有任何问题。但是当我删除记录时,它们就消失了。
我原本预计这些表会有一个设置__deleted标志的触发器,因此删除该记录将从iOS应用程序中删除。但那并没有发生。
那么,我应该如何删除记录?
正常删除正确的程序,我需要找出触发器未运行的原因吗?
或者我应该自己设置__deleted标志?
或者还有别的东西,我应该做什么?
=========其他评论=========
如果我理解这一点,如果我在azure数据库的记录上设置了__delete标志,则同步过程将删除移动设备上本地数据库中的匹配记录。
同步完成后会删除记录吗?
或者有没有办法让我知道同步已经完成,删除记录是否安全?
或者我应该让删除记录累积?
答案 0 :(得分:2)
从功能上讲,Azure移动服务和Azure移动应用程序中的软删除功能相同。唯一的区别是列名称。您可以在此处阅读有关Azure移动服务中的软删除的文档:https://azure.microsoft.com/en-us/documentation/articles/mobile-services-using-soft-delete/
软删除是一种后端功能,因此您不必在客户端中执行任何操作即可启用它。您必须在后端更改代码。
答案 1 :(得分:2)
为了在直接访问数据库时将记录标记为已删除,您需要自己设置__deleted标志。有一个触发器将__updatedAt设置为__deleted设置的时间。这样,当您的移动应用程序查询更新时,它将看到该记录已被删除。
只有当您通过Mobile Services REST API访问数据时,才会将HTTP DELETE转换为为您设置__deleted。
编辑以添加对评论的回复
是的,当移动设备将记录与__deleted设置同步时,它将删除设备上的记录。
保留已删除记录的时间取决于您期望的记录数,共享记录的设备数以及保留记录的其他业务要求。 Adrian链接的文章有示例调度程序,用于在软删除后30天内删除记录。
本文还建议您让移动应用程序定期从服务器清除并重新下载整个数据集,以确保它不会停留在服务器上已删除的延迟记录(例如在设备上)与软删除期相比很少使用,在此示例中为30天。