同じ物理Azureテーブルに格納するエンティティが複数あります。ファイルからテーブルエントリを挿入/マージしようとしています。私は、各プロパティを実際にシリアル化せずに、またはさらに言えばカスタムエンティティを作成せずにこれを行う方法を見つけようとしています。
次のコードを試しているときに、汎用のDynamicTableEntityを使用できるのではないかと思いました。ただし、挿入操作に役立つかどうかはわかりません(ほとんどのドキュメントは置換/マージ操作に関するものです)。
私が得るエラーは、HResult =-2146233088メッセージ=操作の予期しない応答コードです:0 Source = Microsoft.WindowsAzure.Storage
どんな助けでも大歓迎です。
これが私のコードの抜粋です
_tableClient = storageAccount.CreateCloudTableClient();
_table = _tableClient.GetTableReference("CloudlyPilot");
_table.CreateIfNotExists();
TableBatchOperation batch = new TableBatchOperation();
....
foreach (var pkGroup in result.Elements("PartitionGroup"))
{
foreach (var entity in pkGroup.Elements())
{
DynamicTableEntity tableEntity = new DynamicTableEntity();
string partitionKey = entity.Elements("PartitionKey").FirstOrDefault().Value;
string rowKey = entity.Elements("RowKey").FirstOrDefault().Value;
Dictionary<string, EntityProperty> props = new Dictionary<string, EntityProperty>();
//if (pkGroup.Attribute("name").Value == "CloudServices Page")
//{
// tableEntity = new CloudServicesGroupEntity (partitionKey, rowKey);
//}
//else
//{
// tableEntity = new CloudServiceDetailsEntity(partitionKey,rowKey);
//}
foreach (var element in entity.Elements())
{
tableEntity.Properties[element.Name.ToString()] = new EntityProperty(element.Value.ToString());
}
tableEntity.ETag = Guid.NewGuid().ToString();
tableEntity.Timestamp = new DateTimeOffset(DateTime.Now.ToUniversalTime());
//tableEntity.WriteEntity(/*WHERE TO GET AN OPERATION CONTEXT FROM?*/)
batch.InsertOrMerge(tableEntity);
}
_table.ExecuteBatch(batch);
batch.Clear();
}