2015-12-15 42 views
0

我們已經有幾例我們的應用程序在使用映射模型時似乎無法遷移用戶數據。該應用程序需要很長時間才能完成遷移並且遷移失敗。是的 - 我們不應該在推出期間遷移!推斷的映射模型總是導致輕量級遷移?

我想知道是否有可能推斷的映射模型可能而不是導致輕量級遷移。我讀過的所有帳戶建議推斷的映射必然是輕量級的,但我沒有看到一個強有力的聲明,這是一個保證。

我們遇到問題的情況包括將屬性從作爲外部二進制數據存儲的模式中刪除(在模式編輯器中勾選了Allows External Storage)。我想知道,如果這種特定的遷移及其模型自動推斷出來,可能仍然需要將整個數據庫引入內存的大量遷移。

有沒有辦法判斷一個特定的推斷遷移是否重量很重?

回答

1

除非你自己定義自定義映射模型,遷移是定義輕量級。這是documentation中「輕量級」和「自定義」遷移定義的唯一可能解釋。

這與您所看到的遷移失敗無關。也許一些更改需要自定義遷移,這就是輕量級遷移失敗的原因。

+0

謝謝。使用推斷的映射,特定的遷移通常可以正常工作,但對於少數用戶而言,可能會失敗,因爲他們的特定數據需要手動遷移?我們觀察到的是,對於大多數用戶來說,自動(推斷)遷移是很好的,但對於少數用戶來說,它並沒有在啓動的時間限制內完成。 – Benjohn

+0

這聽起來像預期的行爲。不能保證遷移是在一定的時間範圍內完成的。正如您指出的那樣,您需要爲用戶提供一個UI,以便該應用可以完成啓動並在後臺完成遷移。這會解決你的問題。 – Mundi

+0

同意,但這意味着「原位」遷移在某種意義上是「快速」的,即使是相當大的數據庫也只是一個數據庫操作。我同意該文件將「輕量級」與「推測」等同起來;我仍然不相信這絕對是說這意味着數據庫之外永遠不會有任何進一步的成本。例如,在我看來,遷移後需要刪除外部存儲。也許刪除這些文件可能非常耗時。 – Benjohn

相關問題