1
我有多個實體存儲在同一個物理Azure表中。我試圖從文件中插入/合併表項。我試圖找到一種方法來做到這一點,沒有真正序列化每個屬性或創建自定義實體的事情。如何使用Windows Azure SDK 2.0插入/更新到Azure表中
在嘗試下面的代碼時,我想也許我可以使用泛型DynamicTableEntity。但是,我不確定它是否有助於插入操作(大多數文檔是用於替換/合併操作)。
我得到的錯誤是 的HResult = -2146233088 消息=意外響應代碼進行操作:0 源= 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();
}
有趣的是,這兩個代碼庫(DynamicTableEntity以及DictionaryTableEntity)在基於ASP.NET的應用程序上工作,但不在Windows 8上。已打開支持請求。 – user1939211