0

軽量の移行を使用して、アプリの次のバージョン1.1のコアデータモデルを正常にバージョン管理しました。このアプローチの保守性について質問があります。

アプリのv1.2でモデルを再度バージョン管理し、ユーザーがv1.0から1.2に更新した場合、2つの移行は順番に正常に適用されますか?つまり、モデルのバージョンを保持している場合、移行は累積されますか?

4

1 に答える 1

3

両方の移行が軽量である場合、両方を順番に適用する必要はありません。軽量の移行は次の場合に発生する可能性があるため:

  • 新しい属性の簡単な追加
  • 属性の削除
  • オプションではない属性がオプションになります
  • オプションの属性がオプションではなくなり、デフォルト値を定義する
  • エンティティまたはプロパティの名前を変更する

最後のケースでは、ストアで使用されている名前(「正規名」)を指定します。これはデフォルトではプロパティ名であるため、データモデルの最初のバージョンで呼び出されたプロパティになります。その後、正規名をそのままにしておく限り、プロパティ名を任意に変更できます。

したがって、正味の効果は、Core Dataがバージョン1からバージョン2へ、およびバージョン2からバージョン3に移行する方法を理解できるが、バージョン1からバージョン3に直接移行する方法を理解できない一連のイベントがないことです。

逆に、マッピングモデルを介して手動マッピングを指定する場合は、すべての手動マッピングを累積的に適用するコードを作成するか、データモデルの進行に合わせてO(n ^ 2)マッピングを提供する必要があります。

于 2012-11-25T20:08:09.630 に答える