2016-09-02 8 views
0

私たちは、Androidモバイルアプリケーションのオフライン同期とプッシュ通知のサポートを提供するために、Azure Mobile Appを使用しています。Azureテーブルストレージ - C#Server SDK - TableEntityとTableControllerとApiController(MobileAppControllerでアノテート)

ダウンロード用に提供されたサンプルプロジェクト(TodoItem)は、実装する方法としてEntityDataTableControllerを使用します。 EntityDataは、PartitionKeyRowKeyという概念を持っていません。

TableEntityは、PartitionKeyRowKeyのクラスです。

EntityDataの代わりにこれを使用してモデルを構築すると、「Id」、「Version」、「UpdatedAt」、「CreatedAt」、「PartitionKey」などのプロパティの定義が追加で実装されます。ITableData 'と' RowKey 'です。

BaaSを使用している開発者は、TableEntityを使用する場合は、これらのすべてを実装するように依頼するのはあまりありませんか? EntityDataを使用する方法はありますか?PartitionKeyRowKeyを指定することはできますか?

ご協力いただきまして誠にありがとうございます。

答えて

1

あなたはEntityDataをDynamicTableEntityに変換して、それをAzureテーブルストレージに書き込んだり読み込んだりすることができます。 DynamicTableEntity変換を実行している間は、必要なパーティションキーと行キーをエンティティに割り当てることができます。

あなたとの間の変換を行う方法に精通していない場合、このNugetパッケージを見てもよい: https://www.nuget.org/packages/ObjectFlattenerRecomposer/

これは、任意のオブジェクトを受け取り、EntityProperty辞書に変換し、あなたはそのPKとRKを設定することができますし、ダイナミックテーブルエンティティを作成します。

私はまた、AzureストレージSDKには、このAPIを統合するためのAzureチームで働いています: https://github.com/Azure/azure-storage-net/pull/337/files

使用方法:ObjectFlattenerRecomposerを使用して

//オブジェクトを平らにし、EntityProperty辞書

辞書flattenedProperties = EntityPropertyConverter.Flatten(complexObject)に変換します。

// DynamicTableEntityを作成し、そのPKとRK

DynamicTableEntity dynamicTableEntity =新しいDynamicTableEntity(のPartitionKey、のrowKey)を設定します。

dynamicTableEntity。プロパティ= flattenedProperties;

//クライアントSDKを使用してAzureテーブルストレージにDynamicTableEntityを書く

// DynamicTableEntityとしてPKを使用してのAzureから同じPKとRK

DynamicTableEntityエンティティ= [Readを使用してバックAzureTableStorageからエンティティを読みますおよびRK]。

// DynamicTableEntityを元の複合オブジェクトに戻します。

元のcomplexObjectはOrder型であったとします。

オーダーオーダー= EntityPropertyConverter.ConvertBack(entity.Properties);

+0

ありがとうございました。私たちは 'StorageData'クラス(https://msdn.microsoft.com/en-US/library/azure/microsoft.azure.mobile.server.storagedata.aspx)を使用して終了しました。これは、必要なフィールドのデフォルトマッピングを提供します必要なものとしてテーブルの静的構造を使用します。再度、感謝します。 – FrailWords

+1

あなたは大歓迎です。単純なビジネスモデルをデータモデルに変換するにはStorageDataがうまくいくでしょう。ビジネスデータモデルが複雑になる(StorageDataが変換で扱えるものより複雑な場合)場合は、ObjectFlattenerRecomposer APIを使用して再考することができます。 –

関連する問題