2015-11-04 88 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