2016-07-06 3 views
1

Azureのオフライン同期APIは完全なORMを提供しませんが、基本的なクラス間マッピングを提供します。Azureのオフライン同期APIでのクラスからテーブルへのマッピングの初期化

sample projectTodoItemManagerがこれを持っている:

store.DefineTable<TodoItem>(); 

は、この唯一のモバイルアプリの最初の実行で行わ、またはそれが起動するたびに呼び出すことが安全であるべきか?したがって、「存在しない場合は作成」の操作を実行しますか?

さらに、クラスのスキーマが変更された場合はどうなりますか?

答えて

2

Azureのモバイルアプリは、あなたのSQLiteデータベースに「存在しない場合は作成します」と同等のものを行います。

+0

クラスが変更された場合、APIはマップされたテーブルのスキーマを自動的に更新しますか?言い換えれば、私たちが移行を処理するための正式な方法はありますか? –

+1

@hbob列を追加すると、SDKはそれらをローカルストアに追加します。ただし、実際の移行サポートではありません。たとえば、新しい列にはnull値があり、SDKでは列が削除されません。真の移行サポートのためには、独自のローカルストアレイヤーを実装する必要があります。 https://github.com/Azure/azure-mobile-apps-net-client/blob/master/src/Microsoft.WindowsAzure.MobileServices.SQLiteStore/MobileServiceSQLiteStore.cs#L487を参照してください。 –

1

データ同期サービスはデータのみを同期します。プロビジョニング中にメンバーデータベースに同期される対応するテーブルを作成することは可能ですが、同期できる最小限のものしか作成しません。ソースデータベースからストアドプロシージャ、トリガ、またはビューを作成または同期することはありません。ターゲット・データベース・メンバーに、ソースからのデータベース・スキーマの完全忠実コピーを持たせたい場合は、ソース・データベースをスクリプト化して、ターゲット・データベース・メンバー上でスクリプトを最初に実行することができます。

さらに、メンバーデータベースのスキーマを変更すると、これらの変更はサービスで取得されずに同期されません。同期グループ内のデータセットの一部として明示的に選択された列のみが同期されます。スキーマ変更の結果として列を追加または削除する場合は、同期グループを変更する必要があります。それはあなたのアプリケーションが起動するたびにそれを呼び出すために安全です -

https://jtabadero.wordpress.com/2012/08/23/things-you-need-to-know-about-sql-data-sync-service/

+1

質問は、データ同期サービスではなく、Azure Mobile Appsのオフライン同期に関するものでした。 –

+0

はいazureモバイルサービスでは、syncオプションはローカルストレージ(sqlite)とSQL Azureの間のデータ用です。 – Aravind

関連する問題