Dot-Net
有沒有辦法從表中獲取不同的 PartionKey
目前,我使用 PartitionKey 來區分將數據儲存到 Azure 表服務中的設備。我想建構一個允許我瀏覽該數據的查看器,但是能夠對其進行結構化以便我可以“按設備”或按 PartitionKey 查看數據會很好。查看器應用程序不知道存在哪些設備,因此如果我能以某種方式獲取給定表中不同 PartionKeys 的列表,那就太好了。這是可能的,還是我將被降級為創建一個元數據表,在其中為每個設備插入一個新行,然後使用它進行查詢?
我認為沒有辦法檢索所有分區鍵。不過,這是一個聰明的解決方法:https ://docs.microsoft.com/en-gb/archive/blogs/avkashchauhan/retrieving-partition-key-range-in-windows-azure-table-storage
引用 Avkash 的部落格:
進一步探勘,我發現沒有內置 API 來獲取分區鍵列表,而是我必須為自己創建一個解決方案。所以我最終在每個分區中插入了一個虛擬行,當我想獲得一個分區鍵列表時,我只是查詢那些虛擬項目,他們給了我我正在尋找的列表。
我敢肯定您已經看到了這一點,但對於可能會遇到這個問題的其他人,我認為這是表服務功能的最佳指南:http: //azure.microsoft.com/en-us/documentation/articles /storage-dotnet-how-to-use-tables/包含範例和詳細 API 文件的連結。
創建一個表來儲存您的分區。按您使用的表名對錶進行分區,並為您創建的每個分區添加一個條目。
public class PartitionEntry : TableServiceEntity { } tableServiceContext.AddObject("TablePartitions", new PartitionEntry { PartitionKey = "<table name>", RowKey = "<partition key>", }); tableServiceContext.BeginSaveChanges(SaveChangesOptions.ContinueOnError, null, null);然後只需查詢此表即可獲取分區列表。這對我來說非常易於管理。
var tbl = tableServiceContext.CreateQuery<PartitionEntry>("TablePartitions"); return tbl.Where(i => i.PartitionKey == "<table name>") .Select(i => new { PartitionKey = i.RowKey, });我敢打賭這可以優化。