我有多个实体要存储在同一个物理 Azure 表中。我正在尝试从文件中插入/合并表条目。我正在尝试找到一种方法来做到这一点,而无需真正序列化每个属性或为此创建自定义实体。
在尝试以下代码时,我想也许我可以使用通用的 DynamicTableEntity。但是,我不确定它是否有助于插入操作(大多数文档用于替换/合并操作)。
我得到的错误是 HResult=-2146233088 Message=Unexpected response code for operation : 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();
            }